web-dev-qa-db-ja.com

リモートホストの1つのポートのステータスを確認

リモートホストのポートステータスを確認できるコマンドラインが必要です。私はping xxx.xxx.xxx.xxx:161を試しましたが、それは "Host"を認識しません。そのポートが開いていることがわかっているホストに対して同じコマンドを実行するまで、私はそれが「良い」答えだと思いました。これは、リモートポートのステータスをチェックし、そのリモートポートを使用して情報を取得するコマンドを実行し、次にリモートポートチェックコマンドを実行してから、次のサーバーのそのポートを使用して情報を取得するコマンドです。 、 等々。私はあちこちを見て、pingがそれを実行するかもしれないと考えました、しかしいろいろなバージョンのpingがあるに違いありません、私がこれをしているサーバーがそのオプションを示さないと思います。

ちょっと困ったことに、私はウェブサイトからウェブベースのリモートポートチェッカーを試してみました - そして結果は "問題のある"サーバーと正しいサーバーの両方に対して正しいものでした。ただし、500を超えるサーバーIPを使用してバッチ実行することはできません。

私にできることは簡単ですか?私のPerlのスキルは非常に錆びています(それを使うか失くします)、バッチ以外の他のWindowsベースの言語を知りません。 Unixが私のスキルですが、これはWidows Server 2003から実行する必要があります。

151
Sheila

あなたは nmapnetcat のようなポートスキャナを探しているようです。どちらもWindows、Linux、Mac OS Xで利用できます。

たとえば、既知のipでtelnetを確認します。

nmap -A 192.168.0.5/32 -p 23

たとえば、Host.example.comで20から30までの開いているポートを探します。

nc -z Host.example.com 20-30
142
Glenn

コマンドプロンプトでは、telnetコマンドを使用できます。たとえば、ポート80を使用してIP 192.168.10.1に接続するには、

telnet 192.168.10.1 80

Windows 7以降で telnetを有効にするには、 をクリックします。リンクされた記事から、コントロールパネル - >プログラムと機能 - > windows features - > telnetクライアントを通してtelnetを有効にするか、あるいは単にadminプロンプトでこれを実行してください。

dism /online /Enable-Feature /FeatureName:TelnetClient
120
Naveen Yedugani

スクリプトを作成する目的で、curlコマンドで実行できることがわかりました。次に例を示します。

$ curl -s localhost:80 >/dev/null && echo Connected. || echo Fail.
Connected.
$ curl -s localhost:123 >/dev/null && echo Connected. || echo Fail.
Fail.

curlは場合によっては異なるエラーコードを返すことがあるので(おそらくコメントによって)、すべてのサービスでうまくいくとは限らないかもしれません。そのため、次の条件を追加すると信頼できる方法でうまくいく可能性があります。

[ "$(curl -sm5 localhost:8080 >/dev/null; echo $?)" != 7 ] && echo OK || echo FAIL

注:最大接続タイムアウトを5秒に設定するために-m5を追加しました。

Hostが有効かどうかも確認したい場合は、6終了コードも確認する必要があります。

$ curl -m5 foo:123; [ $? != 6 -a $? != 7 ] && echo OK || echo FAIL
curl: (6) Could not resolve Host: foo
FAIL

返されたエラーコードをトラブルシュートするには、単にcurl Host:portを実行します。

$ curl localhost:80
curl: (7) Failed to connect to localhost port 80: Connection refused

終了コードの完全なリストについてはman curlを参照してください。

24
kenorb

押す Windows + R cmdと入力し、 Enter

コマンドプロンプト内

telnet "machine name/ip" "port number"

ポートが開いていない場合、このメッセージが表示されます。

"Connecting To "machine name"...Could not open connection to the Host, on port "port number":

さもなければあなたは開かれた港に連れて行かれるでしょう(空の画面が表示されます)

22
Leo

Ncコマンドを使う

nc -zv <hostname/ip> <port/port range>

For example,
nc -zv localhost 27017-27019
or
nc -zv localhost 27017

Telnetコマンドも使えます

telnet <ip/Host> port
18
minhas23

ncまたは 'netcat'にもスキャンモードがありますが、これは役に立ちます。

4
caskey

Bashでは、関連するソケットへのTCP接続を開くことができる疑似デバイスファイルを使用できます。構文は/dev/$tcp_udp/$Host_ip/$portです。

Memcachedが実行されているかどうかをテストする簡単な例は次のとおりです。

</dev/tcp/localhost/11211 && echo Port open || echo Port closed

これは特定のWebサイトがアクセス可能かどうかを確認するための別のテストです。

$ echo "HEAD / HTTP/1.0" > /dev/tcp/example.com/80 && echo Connection successful.
Connection successful.

詳細については、 を参照してください。高度なBashスクリプトガイド:第29章/dev/proc

関連: リモートシステム上のポートが(telnetなしで)到達可能かどうかをテストします

その他の例については、 bashシェルでTCP/UDPソケットを開く方法 (記事)を参照してください。

2
kenorb

Windows版のHping( http://www.hping.org/ )を探していると思います。

「インターフェースはping(8)unixコマンドに影響を受けていますが、hpingはICMPエコー要求を送信できるだけではありません。TCP、UDP、ICMPをサポートしています...」

ICMPがそうではないかもしれないTCPポートが(ファイアウォールのように)ブロックされている経路上のどこを見たいのであれば、それは非常に役に立ちます。

2
Trueblood