0
点赞
收藏
分享

微信扫一扫

批量ping检测主机

思考的鸿毛 2022-04-02 阅读 72
运维
#!/bin/bash

##脚本支持单个、多个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"
}


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"
}


if [ -f $1 ]
then
    check_ping_file $1
elif
    [[ "$1" =~ ^[1-9] ]]
then
    check_ping_ip $@
else
    echo "Parameter error..."
fi
举报

相关推荐

0 条评论