shell脚本探测主机存活

首先我有一些IP地址在文本中,我需要知道他们所在主机是否存活

[root@localhost shell]# cat ip.txt 

47.102.212.99

47.102.212.223

119.3.103.33

225.17.221.123


方法一:使用for循环

#!/bin/bash
###############################
##for循环ping文本中的IP
##
##############################
#设置变量
list=`cat $(pwd)/ip.txt`
#for循环遍历文本中的内容
for ip in $list
do
#ping一次,超时时间1秒 混合输出导入到/dev/null,不需要看过程
    ping -c 1 -W1  $ip >/dev/null 2>1
#ping成功的返回码为0,echo一个up,ping失败则echodown
    if [ $? -eq 0 ];then
    echo "$ip is up...."
    else 
    echo "$ip is down...."
    fi
done


方法二:while循环

#!/bin/bash
###########################
#while循环探测主机是否存活#
###########################
#这里read ip实际上读的结尾的ip.txt文件
while read ip
do
#ping一次,超时时间为1秒,混合输出导入到/dev/null中,不看过程。
    ping -c1 -W1 $ip &>/dev/null
#ping返回码为0,echo一个up,否则echo down。
    if [ $? -eq 0 ];then
    echo "$ip is up....."
    else
    echo "$ip is down....."
    fi
done < ip.txt


注:ping不同不代表不存活,也可能不给ping,需要多工具去判断。