如何监控正在运行的程序以及开放的端口?

如何监控正在运行的程序以及开放的端口?

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

我希望在新程序运行时收到电子邮件/松弛通知。也许有人知道一些可以做到这一点的实用程序或程序?

答案1

#! /bin/bash

while :; do
    running=$(netstat -plnt)
    if [ "$running" != "$newrunning" -a -n "$firstrun" ]; then
        diff -u  <(echo "$newrunning") <(echo "$running") | mail -s "New listeners!" [email protected]
    fi
    newrunning=$(netstat -plnt)
    firstrun=1
    sleep 1
done

该脚本(显然必须在 root 下运行)将通知您任何打开侦听端口的新/删除的应用程序。

答案2

这个允许您设置应用程序列表

可以添加到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

它只会通知您有关新应用程序的信息

相关内容