【问题标题】:Bash Script to check host status [closed]用于检查主机状态的 Bash 脚本 [关闭]
【发布时间】:2016-05-15 22:14:14
【问题描述】:

我有一个文件 1.txt,每个 ip 或主机有一行,即:

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

感谢任何帮助。

【问题讨论】:

  • 它似乎不起作用?这不是很丰富。运行脚本时会发生什么?您收到任何错误消息吗?他们说什么?

标签: bash shell


【解决方案1】:

为什么不采取不同的方法,做这样的事情:

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
$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 2021-12-26
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多