好的,所以我想监控 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
它只会通知您有关新应用程序的信息