シェルスクリプトでのTelnetの使用


8

telnetコマンドを使用して、MySQLポートが応答しているかどうかを確認します。

telnet 10.10.10.24 3306

ctrl文字を使用して切断します。これは期待どおりに機能しています。このコマンドをシェルスクリプトで使用するにはどうすればよいですか?


実際には、Janneが提案するように改行を使用してエコーを実行し、-wを使用して正常なタイムアウト値を追加します。
3molo '05

回答:


12

ポートが開いているかどうかを確認するだけの場合は、次のことを試してください。

$ nc -zv 10.10.10.24 3306
Connection to localhost 3306 port [tcp/mysql] succeeded!

ncポートが開いている場合は0を返し、開いていない場合は1を返します。これはスクリプティングにも非常に役立ちます。vスイッチを省略して静かにします。

if ! nc -z 10.10.10.24 3306
then
    do_something
fi

ありがとう。しかし、-zスイッチはサーバーでは機能しますが、別のサーバーでは機能しません。ncコマンドのバージョンを確認する必要がありますか?
shantanuo 2011

たぶん。機能していないバージョンは何ですか?
Cakemox

-zスイッチは正しく機能しています。上記のコメントは無視してください。
shantanuo 2011


4

ncがない場合は、bash特殊ファイルのリダイレクトを使用できます。

head -1 < /dev/tcp/10.10.10.24/3306 >/dev/null && echo MySQL is on || echo MySQL is off



0

私はnetcatを使用し、代わりに '-w'を使用します。

host:〜user $ nc -w 1 1.2.6.1 3306
?
5.1.57-1〜dotdeb.1?WO`rA * L#h?b4z.pmT; i〜^; host:〜user $ 

0

ここでは、bashシェル/期待でTelnetを使用する方法を示します。

#!/usr/bin/expect
# just do a chmod 755 one the script
# ./YOUR_SCRIPT_NAME.sh $YOUHOST $PORT
# if you get "Escape character is '^]'" as the output it means got connected otherwise it has failed

set ip [lindex $argv 0]
set port [lindex $argv 1]

set timeout 5
spawn telnet $ip $port
expect "'^]'."
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.