Shell-Script
如何使用開放埠監控正在執行的程序?
好的,所以我想監控 Debian 上正在執行的程序。例如,我在我的實例上執行了多個程序,我可以獲得輸出
netstat -plnt
並查看程序及其埠是什麼。例子:tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 65/sshd tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 656/mysqld tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 631/redis-server tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1023/nginx
我想在新程序執行時收到有關電子郵件/鬆弛的通知。也許有人知道一些可以做到這一點的實用程序或程序?
#! /bin/bash while :; do running=$(netstat -plnt) if [ "$running" != "$newrunning" -a -n "$firstrun" ]; then diff -u <(echo "$newrunning") <(echo "$running") | mail -s "New listeners!" user@example.com fi newrunning=$(netstat -plnt) firstrun=1 sleep 1 done
該腳本(顯然必須在 root 下執行)將通知您任何打開偵聽埠的新/刪除應用程序。
這個允許您設置應用程序列表
可以在cronjob上添加
#!/bin/bash known_apps="sshd|nginx|mysqld|redis" netstat=$(netstat -plnt | awk 'FNR > 2' | egrep -v "$known_apps") if [[ $? -eq 0 ]]; then echo "other apps, running" send mail command including $netstat fi
如果你不想要一個 cronjob 然後而不是
if
, 使用while
while true; do echo "other apps, running" sendmail command include $netstat sleep 2 (or how often you want this loop to run ) done
它只會通知您有關新應用的資訊