shell 检测主机存活状态

  • for版本
#!/bin/bash

#编写脚本测试192.168.1.0/24整个网段中哪些主机处于开机状态,哪些主机处于关机状态
#for i in {1..254}
#do
#    ping -c2 -i0.3 -W1 192.168.1.$i &>/dev/null
#    if [ $? -eq 0 ];then
#    echo "192.168.1.$i is UP"
#    else
#    echo "192.168.1.$i is DOWN"
#    fi
#done
  • while版本
#编写脚本测试192.168.1.0/24整个网段中哪些主机处于开机状态,哪些主机处于关机状态
#i=1
#while [ $i -le 254 ]
#do
#    ping -c2 -i0.3 -W1 192.168.1.$i &>/dev/null
#    if [ $? -eq 0 ];then
#        echo "192.168.1.$i is UP"
#    else
#        echo "192.168.1.$i is DOWN"
#    fi
#    let i++
#done
  • 多进程版本
#编写脚本测试192.168.1.0/24整个网段中哪些主机处于开机状态,哪些主机处于关机状态
#定义一个函数,ping某一台主机,并检测主机的存活状态
#myping(){
#ping -c2 -i0.3 -W1 $1 &>/dev/null
#    if [ $? -eq 0 ];then
#    echo "$1 is UP"
#    else
#    echo "$1 is DOWN"
#    fi
#}
#for i in {1..254}
#do
#    myping 192.168.1.$i &
#done
#使用&符号,将执行的函数放入后台执行
#这样做的好处是不需要等待ping第一台主机的回应,就可以继续并发ping第二台主机,以次类推
  • 最后一种规范写法
#!/bin/bash

#Auth lijunmin
#Date: 2018-05-14
#Description: This scripts function is check ip status.
#Version: 1.1
#Email: [email protected]

IPFILE=/root/test/ip.txt
ACTIP=/root/test/actip.txt
DIEIP=/root/test/dieip.txt

for ip in `cat $IPFILE`
do
    ping -c 1 -i 0.3 -W 1 $ip &>/dev/null
        if [ $? -eq 0 ];then
            echo "$ip ok" >>$ACTIP
        else
            echo "$ip down" >>$DIEIP
        fi
done

echo "能ping通的IP个数是" `cat $ACTIP |wc -l`
echo "不能ping通的IP个数是" `cat $DIEIP |wc -l` 

 

你可能感兴趣的:(shell)