gpt4 book ai didi

linux - 并行 fping 多台主机

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:11 24 4
gpt4 key购买 nike

我想使用 fping 来 ping parellel 中的一些主机,如果其中一个主机宕机,则将其写入一个文件。下面的工作正常,但它为每个 ip 运行一次我如何消除这个或者如果 rcv < 1?

#!/bin/bash

down_hosts=/tmp/down.log
hosts=/tmp/ips.txt

while read line
do
alive=$(fping -c 1 -f ips.txt | awk -F: '{ print $1 }')
grep -q -o $line <<<$alive
if [[ "$?" == "1" ]];
then
echo "$line is offline"
if [ $(grep -c "$line" "$down_hosts") -eq 0 ]; then
echo $line >> down.log
fi
else
echo "$line is online"
if [ $(grep -c "$line" "$down_hosts") -eq 1 ]; then
sed -i "/$line/d" "$down_hosts"
fi
fi
done < ips.txt

输出

8.8.8.8 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 3.67/3.67/3.67
1.2.3.4 : xmt/rcv/%loss = 1/0/100%
4.3.2.1 : xmt/rcv/%loss = 1/0/100%
8.8.8.8 is online

8.8.8.8 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 3.68/3.68/3.68
1.2.3.4 : xmt/rcv/%loss = 1/0/100%
4.3.2.1 : xmt/rcv/%loss = 1/0/100%
1.2.3.4 is offline

8.8.8.8 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 3.65/3.65/3.65
1.2.3.4 : xmt/rcv/%loss = 1/0/100%
4.3.2.1 : xmt/rcv/%loss = 1/0/100%
4.3.2.1 is offline

最佳答案

由于您的 fping 调用每次都执行相同的操作,因此您可以在循环之前运行它。

alive=$(fping -c 1 -f ips.txt | awk -F: '{ print $1 }')
while read line
do
# ...
done < ips.txt

关于linux - 并行 fping 多台主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49004450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com