(13.1)判断主机存活3次机会

文章目录

  • eg:用数组
#!/usr/bin/bash
ip_list="10.18.40.1 10.48.42.127"
for ip in $ip_list  		##循环ip
do
	for count in {1..3} 		##每个ip给3次机会
	do
		ping -c1 -W1 $ip &>/dev/null
		if [ $? -eq 0 ];then
			echo "$ip ping is ok"
			break
		else
			echo "$ip ping is failure: $count"
			fail_count[$count]=$ip
		fi
	done
	if [ ${#fail_count[*]} -eq 3 ];then
		echo "${fail_count[1]} ping is failure"
		unset fail_count[*]
		##unset 清空数组
	fi
done

  • 测试:
    (13.1)判断主机存活3次机会_第1张图片
  • eg2:ip.txt文件
10.18.40.1
10.18.42.127
10.18.42.4
#!/usr/bin/bash

while read ip  		##循环ip
do
	for count in {1..3} 		##每个ip给3次机会
	do
		ping -c1 -W1 $ip &>/dev/null
		if [ $? -eq 0 ];then
			echo "$ip ping is ok"
			break
		else
			echo "$ip ping is failure: $count"
			fail_count[$count]=$ip
		fi
	done
	if [ ${#fail_count[*]} -eq 3 ];then
		echo "${fail_count[1]} ping is failure"
		unset fail_count[*]
		##unset 清空数组
	fi
done < ip.txt
  • 测试:
    (13.1)判断主机存活3次机会_第2张图片
  • eg3:用变量
while read ip
do
	fail_count=0
	for i in {1..3}
	do
		ping -c1 -W1 $ip &>/dev/null
		if [ $? -eq 0 ];then
			echo "$ip ping is ok"
			break
		else
			echo "$ip ping is failure: $i"
			let fail_count++
		fi
	done
	if [ $fail_count -eq 3 ];thrn
		echo "$ip ping is failure"
	fi
done < ip.txt
  • 测试:
    (13.1)判断主机存活3次机会_第3张图片
  • eg:使用函数
ping_success()
{
	ping -c1 -W1 $ip &>/dev/null
	if [ $? -eq 0 ];then
		echo "$ip is ok"
		continue
	fi
}


while read ip
do
	ping_success		##若ping通,则不会走后面的2个ping_success,因为ping通continue了,continue是跳过后面的循环
	ping_success
	ping_success
	echo "$ip ping is failure"
done < ip.txt

  • 测试
    (13.1)判断主机存活3次机会_第4张图片

你可能感兴趣的:(鸟哥Linux私房菜)