Shell-Script

如何使用開放埠監控正在執行的程序?

  • October 15, 2020

好的,所以我想監控 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

它只會通知您有關新應用的資訊

引用自:https://unix.stackexchange.com/questions/614636