#!bin/bash
ARRAY1=('192.168.1.1' '192.168.1.2')
for ip1 in ${ARRAY1[*]}
do
process_count1=$(ssh -o ConnectTimeout=3 $ip1 'netstat -ntlp|grep "端口名" |grep -v grep |wc -l' 2>/dev/null)
if [ "$process_count1" -eq 1 2>/dev/null ];then
echo -e "\033[32m $ip1\t\t控制台服務端口\t\t正常 \033[0m"
else
echo -e "\033[31m $ip1\t\t控制台服務端口\t\t異常\033[0m"
fi
process_name1=$(ssh -o ConnectTimeout=3 $ip1 'ps -ef|grep "進程名" |grep -v grep |wc -l' 2>/dev/null)
if [ "$process_name1" -eq 1 2>/dev/null];then
echo -e "\033[32m $ip1\t\t控制台服務進程\t\t正常\033[0m"
else
echo -e "\033[31m $ip1\t\t控制台服務進程\t\t異常\033[0m"
fi
done
echo "************************************************************************"
腳本解釋:
1.通過遍歷數組中的ip,通過ssh連接輸入命令過濾端口和進程,進而判斷服務狀態;
2.2>/dev/null是為了加強體驗,不然ip連不上會導致超時錯誤輸出在屏幕上,if 那一句也是重定向報錯信息;
3.echo -e "\033[31m hello \033[0m";固定的格式寫法,屏幕輸出紅色的hello,如果31改成32則是綠色。更多顏色可以網上查下;
4.如果有多個服務,那就設置多個數組,多個端口多個進程參數,照貓畫虎。
運行結果:
192.168.1.1 控制台服務端口 異常
192.168.1.1 控制台服務進程 異常
192.168.1.2 控制台服務端口 異常
192.168.1.2 控制台服務進程 異常
************************************************************************