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