#!/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
批量ping检测主机
于 2022-04-02 18:57:13 首次发布