中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell編程實戰之如何監控端口

發布時間:2020-09-22 09:21:09 來源:億速云 閱讀:267 作者:小新 欄目:建站服務器

小編給大家分享一下shell編程實戰之如何監控端口,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一般企業用的服務器上面都會跑各種服務,比如nginx、php、mysqlredisMongoDB等等。一般系統的運行可能會需要多個服務的配合,比如我司的系統需要php、mysql、redis、apache、MongoDB服務。這些服務缺一不可。

所以我們要實時監控這些服務,如果發現有服務出現異常,需要立即告警。這里我們不打算通過進程名來判斷服務的狀態。我們打算通過端口的監聽來判斷服務的運行狀態。

linux服務器上有一個命令可以用來查看端口狀態:netstat。但是在centOS7上,需要先安裝net-tools工具,才有這個命令。已經安裝這個工具包后,我們來使用netstat命令,看看它會顯示哪些信息

# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      11213/redis-server  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1556/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      984/sshd            
tcp        0      0 127.0.0.1:88            0.0.0.0:*               LISTEN      17446/httpd         
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      1556/nginx: master  
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      25859/mongod        
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      7138/mysqld

上面顯示的信息,不管是端口6379的redis,還是3306的mysql等等,都是運行我司系統必須的服務。然后,我們通過grep命令,過濾掉第一行以及第二行

# netstat -tlnp | grep tcp
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      11213/redis-server  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1556/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      984/sshd            
tcp        0      0 127.0.0.1:88            0.0.0.0:*               LISTEN      17446/httpd         
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      1556/nginx: master  
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      25859/mongod        
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      7138/mysqld

然后再通過awk命令獲取第四列的信息。

# netstat -tlnp | grep tcp | awk '{print $4}'
127.0.0.1:6379
0.0.0.0:80
0.0.0.0:22
127.0.0.1:88
0.0.0.0:443
127.0.0.1:27017
0.0.0.0:3306

最后再通過cut命令獲取到端口號。

# netstat -tlnp | grep tcp | awk '{print $4}' | cut -d: -f2
6379
80
22
88
443
27017
3306

通過上面的操作,我們能獲取目前服務器端口的情況,然后我們將需要運行服務的端口存放在數組中,然后遍歷該數組和拿到的這些信息做對比。

ports="80 88 443 3306 6379 27017"

for port in $ports
do
    echo $port
done

遍歷這些需要監聽的端口后,我們來將端口與netstat獲取到的信息作對比。我們這里用grep命令來做判斷。下面我們給出完整的代碼:

#!/bin/bash
# 監控服務器端口情況

export LANG=en 
ports="80 88 443 3306 6379 27017"

netstat_info=$(netstat -tlnp | grep tcp | awk '{print $4}' | cut -d: -f2)

for port in $ports
do
    flag=$(echo $netstat_info | grep  $port)
    if [ -z "$flag" ];then
        echo "$port is dead"
    fi
done

對于端口監控的腳本編寫還是很容易的。下面我們來測試下該腳本是否能正常監控端口。所有服務都正常的情況下,執行該腳本不會輸出任何信息。如果關閉了nginx服務,則應該出現信息。

首先,所有服務都正常的情況下,執行腳本

# ./port.sh 
# #不會有任何信息出現

現在我們來主動關閉nginx服務,然后再來運行該腳本,查看會出現什么信息

# /etc/init.d/nginx stop
Stoping nginx...  done
# ./port.sh 
80 is dead
443 is dead

由此得知,該腳本能正常監控服務器端口情況。日常工作中,經常將上述腳本和定時任務以及告警程序一起使用。將此腳本發到定人任務去,沒分鐘執行一次,當發現指定端口沒有被監聽,則觸發告警程序。

以上是shell編程實戰之如何監控端口的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马公市| 丹江口市| 社旗县| 吉木萨尔县| 乌鲁木齐县| 云浮市| 枣庄市| 馆陶县| 菏泽市| 观塘区| 高阳县| 德惠市| 南昌县| 天峨县| 铜梁县| 高雄县| 同江市| 抚顺县| 公主岭市| 平潭县| 灵川县| 祁门县| 岢岚县| 攀枝花市| 延吉市| 西峡县| 平泉县| 志丹县| 四川省| 清苑县| 博乐市| 铜鼓县| 湟中县| 南川市| 吉林市| 方城县| 美姑县| 阳泉市| 安丘市| 静宁县| 中西区|