timtj
timtj

Reputation: 94

Passing Arguments to Running Bash Script

I have a bash script that takes a list of IP Addresses, and pings them every 15 seconds to test connectivity. Some of these IP Addresses are servers and computers as to which I have the ability to control. I would like to be able to do something of the following:

I have the code all set up that pings these computers every 15 seconds and displays. What I wish to achieve is to NOT ping my controlled computers. They will send a command to the bash script. I know this can be done by writing a file and reading such file, but I would like a way that changes the display AS IT HAPPENS. Would mkfifo be an viable option?

Upvotes: 0

Views: 358

Answers (1)

Stefano Sanfilippo
Stefano Sanfilippo

Reputation: 33076

Yes, mkfifo is ok for this task. For instance, this:

mkfifo ./commandlist

while read f < ./commandlist; do
    # Actions here
    echo $f
done

will wait until a new line can be read from FIFO commandlist, read it into $f and execute the body.

From the outside, write to the FIFO with:

echo 42 > ./commandlist

But, why not let the remote server call this script, perhaps via SSH or even CGI? You can setup a /notify-disconnect CGI script with no parameters and get the IP address of the peer from the REMOTE_ADDR environment variable.

Upvotes: 1

Related Questions