我有大量的机器,我需要检查每一小时的可用性,所以。我得到了近1000台机器,它们被划分为4-5个名称系列,然后是每个节点的编号。比如说,从ab1000到ab1200,从bs3000到bs3892,从zx7800到zx8900等等。目前,我使用的是一个简单的ping脚本,因为我不能在这些节点上保存任何软件来监视(我没有这方面的批准)。因此,在我的代码中,我调用一个一个更新所有机器名称的文件(相信我,我每天都需要这样做,因为机器名称经常发生),并想知道我是否可以使用regex来提及机器,因为它将大大简化我的生活。例如: ab1*,zx*等等。我试着在输入文件中使用相同的内容,但没有多大帮助。还有一个问题是,有时会有一两台机器永久停机,我不需要每次都计算。所以我需要把它排除在我的警戒名单之外。
另外,如果还有什么可以让我知道的话,我可以让警报更加健壮,比如给出列表,因为3/300 sx的机器名为sx 7701,7702,7703。
cat /tmp/node.txt
zx7800
zx7801
zx7802
.....
....
zx8900
bs3000
bs3001
cat nodecheck.sh
for node in `cat /tmp/node.txt`
do
count=0
count=$(ping -c 3 $node | grep "100%packet loss"|wc -l)
if [ $count -ne 0 ]
then
echo "$node" >> /tmp/nodedown.txt
fi
done发布于 2018-08-27 19:08:00
您需要一个要监视的名称的列表。您可以手动维护此列表,也可以从其他人维护应该运行的计算机列表的地方提取列表。
你可以简化一些事情。ping命令已经返回了退出状态,您可以使用它。另外,您不需要对每个回波进行重定向,每个循环一次就足够了。这有一个额外的好处,即文件是初始化的,并且不包含上次运行时的行。
for node in $(cat /tmp/node.txt); do
if ! ping -c 3 $node &> /dev/null; then
echo "$node"
fi
done > /tmp/nodedown.txt如果您想要统计数据,可以对它们进行计数,或者使用wc来计算这两个文件中的行数。
echo "$(wc -l < /tmp/nodedown.txt) / $(wc -l < /tmp/node.txt)"发布于 2018-08-27 19:36:07
替代办法:
https://unix.stackexchange.com/questions/465144
复制相似问题