【发布时间】:2020-01-06 16:34:34
【问题描述】:
这是我的脚本应该做的:它 ping 5 次导入文本文件的每一行的 IP 地址。如果 5 次中有 3 次 IP 无法访问,它会回显“它已关闭!”并且(应该)继续下一个 IP ......除了我不知道如何配置这个“跳过”部分。 这是我当前的代码:
FILE=file.txt
unreachableIP=0
while IFS='' read -r line || [ -n "$line" ]; do
set -- $line
for (( i=1; i<=5; i++ ))
do
echo "Ping $1 $i times"
ping -c 1 $1
if [ "$?" = 0 ]
then
echo "reachable"
else
echo "unreachable"
((unreachableIP++))
echo $unreachableIP
if [ $unreachableIP -eq 3 ]
then
echo "it's down!"
unreachableIP=0
fi
fi
done
done < $FILE
示例:如果 IP 地址第 1 次可访问,第 2 次无法访问,第 3 次无法访问,第 4 次无法访问,我希望脚本移动到下一个 IP(下一行),而不是第 5 次尝试 ping。
这是file.txt:
8.8.8.8 GoogleDNS
1.1.1.1 CloudFlareDNS
213.1.1.1 SomeFakeIPForDebug
感谢您的帮助。
编辑:我不想使用 break 因为它也会停止 ping 其他 IP...我希望它只停止 ping 当前 IP。
【问题讨论】:
-
使用
read -r ip line;那么您根本不需要使用set,而是使用$ip代替$1。