#!/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