我想编写一个脚本,可以不断检查网络中应该全天在线的设备是否真的在线。我尝试使用ping命令,但是...
if [ "`ping -c 1 some_ip_here`" ]
then
echo 1
else
echo 0
fi
无论我输入有效还是无效的IP地址,都会返回1
。如何检查特定地址(或更好地,来自IP地址列表的任何设备)是否离线?
我想编写一个脚本,可以不断检查网络中应该全天在线的设备是否真的在线。我尝试使用ping命令,但是...
if [ "`ping -c 1 some_ip_here`" ]
then
echo 1
else
echo 0
fi
无论我输入有效还是无效的IP地址,都会返回1
。如何检查特定地址(或更好地,来自IP地址列表的任何设备)是否离线?
这在终端仿真器窗口中似乎运行得相当不错。它会循环直到建立连接,然后停止。
#!/bin/bash
# ping in a loop until the net is up
declare -i s=0
declare -i m=0
while ! ping -c1 -w2 8.8.8.8 &> /dev/null ;
do
echo "down" $m:$s
sleep 10
s=s+10
if test $s -ge 60; then
s=0
m=m+1;
fi
done
echo -e "--------->> UP! (connect a speaker) <<--------" \\a
结尾处的 \a 是为了在连接时获取一个响铃字符。我一直在尝试在 LXDE/lxpanel 中实现这一点,但是一旦我重新连接到网络,所有操作都会停止。时间开始作为进度指示器,因为如果你只看到每行都是 "down" 的窗口,你甚至无法判断它是否在移动。
nmap
,它允许你指定 IP 地址范围。 - devnullping -c 1 some_ip_here
”。参考此链接以获取更多信息 - Anubisping
命令打印的所有输出,然后检查是否为非空字符串。由于无论成功与否,ping
命令总是会打印出一些内容,因此它永远不会打印空字符串。要检查一个命令是否成功,不需要用反引号、引号或括号将其包围起来。只需直接写if cmd; then ... fi
即可。 - Jonathan Wakely