2017-02-21 20 views
1

下記のような私のLinuxボックスでncコマンドを使用して、ポートがリッスンしているかどうかを確認しています。LinuxのシェルスクリプトでNC戻り値を表示する方法は?

これは成功メッセージが表示されます。

nc -z 192.168.0.2 9000 

これは、0が表示されます。

echo $? 

私は以下のようなシェルスクリプト.SHファイルでそれを組み合わせています。

#!/bin/sh 
nc -z 192.168.0.2 9000 
echo $? 

これは1代わりの予想0を表示します。繰り返しますが、私のスクリプトを以下のように変更すると動作します。

#!/bin/sh 
echo nc -z 192.168.0.2 9000 
echo $? 

しかし、ここでの問題は、次の行に0を表示し、それはのようなもので、成功のメッセージが表示されています。私は成功メッセージを望んでいません、そして、私は0を期待しています。ここで何が間違っていて、これをどのように修正できますか?

+0

http://stackoverflow.com/questions/4922943/test-from-shell-script-if-remote-tcp-port-is-open – Dan

答えて

0

あなたのスクリプトは期待通りに動作します。 echo nc -z 192.168.0.2 9000 - - #!/bin/sh

ちょうどあなたの最後のバージョンを使用して、スクリプトだけでなく、コマンドラインで

どちらも、(NC 0.7.1およびSH 4.4.12を使用して)全くNCを実行しませんが、それをエコーでる。 ncを何かに置き換えてください。 ncc-1701とあなたは私が何を意味するか見るでしょう。

1

この小さなスクリプトは、トリックを行う必要があります:あなたは、あなたが使用しているNCのバージョンによって

./myscript www.google.com 80 
www.google.com 80 
port 80 is open on www.google.com 

#!/bin/bash 
SERVER=$1 
PORT=$2 
nc -z -v -G5 $SERVER $PORT &> /dev/null 
result1=$? 

#Do whatever you want 

if [ "$result1" != 0 ]; then 
    echo port $PORT is closed on $SERVER 
else 
    echo port $PORT is open on $SERVER 
fi 

使用方法:たとえば

./myscript.sh servername portnumber 

を-Gを-wに調整する必要があるかもしれませんので、実験して最適なものを見つけてください。

関連する問題