这是我使用网上找到的一些资源的第一个 bash 脚本。我认为有更好的方法可以使用其他形式的条件来编写此代码(if then 与控制运算符)。
这是一个基本上检查主机是启动还是关闭(检查它是否可 ping 通)的脚本。您将所需的所有 ip 地址转储到一个文件中,然后运行调用该文件的脚本。文本文件如下所示:
8.8.8.8
4.8.8.8
4.4.4.4
127.0.0.1
实际的脚本是这样的。 2>&1 是否必要,因为它没有。我不得不经常使用括号。
#!/bin/bash
while read line
do
A=$(ping -c 1 $line)
((echo $A | grep "64 bytes") > /dev/null 2>&1 && (echo "UP - "$line)) || echo "DOWN - "$line
done < $1
谢谢!
最佳答案
你完全可以不用括号:
while read -r address; do
ping -c 1 $address >/dev/null 2>&1 && echo "UP - $address" || echo "DOWN - $address"
done < file
>/dev/null 2>&1
将 STDOUT 和 STDERR 都重定向到 /dev/null
,这意味着无论 ping
输出什么都不会'不会打印到您的终端。
然后您可以使用 &&
和 ||
运算符在成功(ping 以 0
退出)或失败时回显消息(ping 以 >0
退出)
如果您愿意,可以使用 if..then..else:
while read -r address; do
if ping -c 1 $address > /dev/null 2>&1; then
echo "UP - $address"
else
echo "DOWN - $address"
fi
done < file
关于linux - 我的第一个 Bash 脚本看起来效率不高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29283309/