特定のポートで実行されているサービスを確認するスクリプト

特定のポートで実行されているサービスを確認するスクリプト

やるべきことがあります。

実行中のサービスを見つけるには、次のポートを検索する必要があります。
ポート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 )' 

関連情報