
さて、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
このスクリプト(明らかにルートで実行する必要があります)は、受信ポートを開く新しいアプリケーション/削除されたアプリケーションについて説明します。
答え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
新しいアプリケーションについてのみお知らせします。