실행 중인 프로그램과 열린 포트를 모니터링하는 방법은 무엇입니까?

실행 중인 프로그램과 열린 포트를 모니터링하는 방법은 무엇입니까?

좋아요, 데비안에서 실행 중인 프로그램을 모니터링하고 싶습니다. 예를 들어, 내 인스턴스에서 여러 프로그램이 실행 중이고 출력을 얻고 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

새로운 애플리케이션에 대해서만 알려줍니다.

관련 정보