2016-02-05 111 views
-5

我有有每個IP或主機,一個文件一行的1.txt,即:bash腳本來檢查主機狀態

yahoo.com 
8.8.8.8 

我試圖寫一個bash腳本,將通過這個文本文件中解析看看主機是否啓動。我需要它將主機的狀態存儲在同名文本文件中,並無限期地循環進程。

這是我迄今取得的進展,不知何故,它似​​乎沒有工作,不知道爲什麼。

while read ip ; do 
     ping -c 1 $ip | grep -E -o '[0-9]+ received' | cut -f1 -d' ' > $ip-status 
$STATUS=$(cat $ip-status) 
if [ $STATUS = "1" ]; then 
       echo "$ip is UP" 
fi 
echo "$ip is DOWN!" 
done < 1.txt 

任何幫助表示讚賞。

+6

它似乎並不奏效?這不是很豐富。當你運行這個腳本時會發生什麼?你有沒有收到任何錯誤信息?他們說什麼? – Kenster

回答

0

爲什麼不採取不同的方法,做這樣的事情:

while true; 
do 
    for i in $(cat test); 
    do 
     dig +short +timeout=2 +tries=3 "$i" && 
     echo "$i" is up || 
     echo "$i" is not responding; 
     sleep 2; 
    done; 
done; 

下面是測試輸出:

$ while true; do for i in $(cat test); do dig +short +timeout=2 "$i" && echo host "$i" is up || echo host "$i" is not responding; sleep 2; done; done 
216.58.218.206 
host google.com is up 
98.138.253.109 
98.139.183.24 
206.190.36.45 
host yahoo.com is up 
216.58.218.206 
host google.com is up 
206.190.36.45 
98.138.253.109 
98.139.183.24 
host yahoo.com is up 
216.58.218.206 
host google.com is up 
98.139.183.24 
206.190.36.45 
98.138.253.109 
host yahoo.com is up 

如果你不希望這樣的IP地址,那麼你可以發送標準輸出到/ dev/null。

請投票,如果你發現這有幫助。

編輯:

我忘了告訴你我的測試文件:

$ cat test 
google.com 
yahoo.com 
$