특정 포트에서 실행되는 서비스를 확인하는 스크립트

특정 포트에서 실행되는 서비스를 확인하는 스크립트

나는 해야 할 일이 있다.

실행 중인 서비스를 찾으려면 다음 포트를 검색해야 합니다.
포트 53과 55를
사용할 수 없으므로 경고를 보내야 합니다.
다음 코드에서 포트의 논리와 구문을 수정하세요.

ntstat=`netstat -tulpn | grep :53 | grep LISTEN | awk {'print $4'}`
port="*:53"

#Just to echo for testing
echo $ntstat  
echo $port

if [[ "$ntstat" == "$port" ]];
then
   echo " X Service at port number $port"
else 
   echo " Port is not listing  "
fi

산출:

127.0.1.1:53
*:53
Port is not listing  

문자열(127.0.1.1:53 ~ *:53)을 일치시키려고 합니다.

답변1

53포트(또는 )에 실행 중인 서비스가 있는지 확인하려면 55다음과 같은 최적화된 솔루션을 권장합니다.

port=":53"
if netstat -tulpn | grep --line-buffered -q "$port .*LISTEN"; then
    echo " X Service at port number $port"
else 
    echo " Port is not listing  "
fi

답변2

text-processing포트와 일치하도록 현재 출력에 대해 작업을 수행 할 수도 있습니다 . 그냥 추가하세요sed -e 's/.*:/:/g'

#!/bin/bash
ntstat=`netstat -tulpn | grep ":53 " | grep LISTEN | awk {'print $4'} | sed -e 's/.*:/:/g'`
port=":53 "

#Just to echo for testing
echo $ntstat  
echo $port

if [[ "$ntstat" == "$port" ]]
then
    echo " X Service at port number $port"
else 
    echo " Port is not listing  "
fi 

다른 포트에 다음이 포함되지 않도록 포트 번호 뒤에 공백을 추가했습니다.53

이것이 연산자이기 때문에 스크립트 맨 위에 bash셔뱅을 넣어야 하므로 스크립트를 로 실행할 때 인터프리터를 로 처리하고 , 스크립트를 다음과 같이 실행하면 인터프리터를 으로 처리하게 됩니다.#!/bin/bash./portlisten.sh/bin/bash$ bash portlisten.sh

답변3

netstat더 이상 사용되지 않는 명령이므로 사용하지 말고 대신 사용하십시오 ss.

귀하의 경우 다음과 같은 것을 사용할 수 있습니다.

ss -H -o state listening '( sport = :53 or sport = :55 )' 

관련 정보