shell腳本批量檢查某個或多個服務的端口和進程是否正常


#!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           控制台服務進程          異常
************************************************************************        
 
        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM