批量ping检测主机

#!/bin/bash


##运维日常简单地主机存活检测脚本
##脚本支持单个、多个ip,支持ip列表文件,运维日常使用主机存活检测



##将要检测的ip保存在文件中,适用于ip较多的情况

check_ping_file()
{
    fileName=$1

    pingResult=$(for ip in `cat $fileName`;do ping -w 1 -c 1 $ip > /dev/null && echo "success:$ip" || echo "failed:$ip";done)

    lostHosts=$(for i in $pingResult;do echo $i;done | grep "^failed" | awk -F':' '{print $2}')
    activeHosts=$(for i in $pingResult;do echo $i;done | grep "^success" | awk -F':' '{print $2}')

    [[ -n $lostHosts ]] && echo -e "\033[30;31mFollowing host connection failed:\033[0m" && \
    for i in $lostHosts;do echo $i;done && echo -e "\033[30;31m====================================\033[0m"

    [[ -n $activeHosts ]] && echo -e "\033[30;32mFollowing host connection succeeded:\033[0m" && \
    for i in $activeHosts;do echo $i;done && echo -e "\033[30;32m====================================\033[0m"
}




##单个、多个ip的检测,适用于ip较少的情况
check_ping_ip()
{
    ipList=$(echo $@ | awk -F'[ ]|[,]' '{for(i=1;i<=NF;i++)print $i}')

    pingResult=$(for ip in $ipList;do ping -w 1 -c 1 $ip > /dev/null && echo "success:$ip" || echo "failed:$ip";done)

    lostHosts=$(for i in $pingResult;do echo $i;done | grep "^failed" | awk -F':' '{print $2}')
    activeHosts=$(for i in $pingResult;do echo $i;done | grep "^success" | awk -F':' '{print $2}')

    [[ -n $lostHosts ]] && echo -e "\033[30;31mFollowing host connection failed:\033[0m" && \
    for i in $lostHosts;do echo $i;done && echo -e "\033[30;31m====================================\033[0m"
         
    [[ -n $activeHosts ]] && echo -e "\033[30;32mFollowing host connection succeeded:\033[0m" && \
    for i in $activeHosts;do echo $i;done && echo -e "\033[30;32m====================================\033[0m"
}



##判断传入的是ip还是文件,并执行函数检测
if [ -f $1 ]
then
    check_ping_file $1
elif
    [[ "$1" =~ ^[1-9] ]]
then
    check_ping_ip $@
else
    echo "Parameter error..."
fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值