2014-01-27 203 views
0

我有一個bash腳本,它需要一個IP地址列表,並且每隔15秒對它們進行一次ping以測試連接。其中一些IP地址是我可以控制的服務器和計算機。我希望能夠做以下的事情:傳遞參數來運行Bash腳本

  • 運行Bash的文件
  • 要乒非控制的IP地址
  • 它會列出受控計算機
  • 當計算機關閉,它發送我的腳本響應說它關閉
  • 腳本進而輸出

我的代碼都設置一個坪這些電腦每15秒鐘顯示一次。我想實現的是不是 ping我的受控計算機。他們會發送一個命令給bash腳本。我知道這可以通過編寫一個文件並讀取這樣的文件來完成,但是我想要一種方法來改變顯示器AS HAPPENSmkfifo會是一個可行的選擇嗎?

+0

例如。 IP 1.1.1.1關閉,它向我的計算機發送必要的命令,然後腳本隨即更新。無論15秒倒計時。 – timtj

+0

爲什麼腳本無法對該命令做出反應並將IP從它正在使用的任何列表中刪除? – cnicutar

+0

該列表從不縮短。它只是在線打印和離線打印。當電腦脫機時,我希望它立即更新。 – timtj

回答

0

是的,mkfifo可以完成此任務。舉例來說,這樣的:

mkfifo ./commandlist 

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

會等到一個新行可以從FIFO commandlist來讀,讀入$f和執行機構。

從外面看,寫FIFO與:

echo 42 > ./commandlist 

,爲什麼不能讓遠程服務器調用這個腳本,也許通過SSH甚至CGI?您可以設置一個不帶參數的/notify-disconnect CGI腳本,並從REMOTE_ADDR環境變量中獲取對等體的IP地址。

+0

我的電腦有2臺顯示器。我的主要用法監視器和我的統計監視器。在統計監視器上,我每隔15秒刷新一次在線/離線IP地址。有了這個設置,我看不出遠程服務器如何使用CGI。 SSH將允許有機會寫入'mkfifo'文件,但是,我必須在統計腳本中添加一些邏輯以允許您提供的設置。 – timtj