Bash

用於檢查主機可用性的 Bash ping 腳本文件

  • January 20, 2021

我正在嘗試在一個文件中編寫一個 bash 腳本,當執行時開始 ping 主機直到它可用,當主機變得可訪問時,它執行命令並停止執行,我嘗試編寫一個但腳本繼續 ping 直到計數結束,

另外,我需要將該程序置於後台,但如果我使用美元 ( $) 符號執行腳本,它仍會在前台執行,

#!/bin/bash
ping -c30 -i3 192.168.137.163
if [ $? -eq 0 ]
then /root/scripts/test1.sh
exit 0
else echo “fail”
fi

我會用這個,一個簡單的單行:

while ! ping -c1 HOSTNAME &>/dev/null; do echo "Ping Fail - `date`"; done ; echo "Host Found - `date`" ; /root/scripts/test1.sh

替換HOSTNAME為您嘗試 ping 的主機。


我錯過了把它放在後台的部分,把那行放在一個 shellscript 中,如下所示:

#!/bin/sh

while ! ping -c1 $1 &>/dev/null
       do echo "Ping Fail - `date`"
done
echo "Host Found - `date`"
/root/scripts/test1.sh

在後台執行它,你會像這樣執行它:

nohup ./networktest.sh HOSTNAME > /tmp/networktest.out 2>&1 &

再次替換HOSTNAME為您嘗試 ping 的主機。在這種方法中,您將主機名作為參數傳遞給 shellscript。

就像一般警告一樣,如果您的主機停止執行,您將在後台連續 ping 該腳本,直到您殺死它或找到主機。所以當你執行它時,我會記住這一點。因為如果你忘記了這一點,你最終可能會吃掉系統資源。

引用自:https://unix.stackexchange.com/questions/184266