実行中のプログラムと開いているポートを監視する方法は?

実行中のプログラムと開いているポートを監視する方法は?

さて、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

新しいアプリケーションについてのみお知らせします。

関連情報