web-dev-qa-db-ja.com

telnet以外に、開いているポートを確認する代替手段は何ですか?

Telnet VIAポートをテストするために、以下を使用できます。次の例では、ポート6667をテストします。

[root@kafka03 ~]# telnet kafka02 6667
Trying 103.64.35.86...
Connected to kafka02.
Escape character is '^]'.
^CConnection closed by foreign Host

一部のマシンでは(内部的な理由により)Telnetを使用できないため、Telnetとしてポートをチェックする代替手段は何ですか?

28
yael

Bash Shellを使用している場合は、その機能を使用して、ポートが開いているか閉じているかを確認できます。

(timeout 1 bash -c '</dev/tcp/127.0.0.1/17500 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/null
PORT OPEN

(timeout 1 bash -c '</dev/tcp/127.0.0.1/7500 && echo PORT OPEN || echo PORT CLOSED') 2>/dev/null
PORT CLOSED

サーバーが1秒後に応答しない場合、タイムアウトに達した場合、'が中断されたため、何も出力されません。

26
in2nix4life

netcatは1つのオプションです。

nc -zv kafka02 6667
  • -z =実際にデータを送信せずに、単にリスニングデーモンをスキャンするようにncを設定します
  • -v =詳細モードを有効にします
38
steve

ゴールドスタンダードは間違いなくnmapnmap.org )ですが、通常、「最良の結果」を得るにはrootが必要です。ただし、スタンドアロンのバイナリを使用でき、機能が低下しただけで、権限のないユーザーとして実行することができます。たとえば、ステルスの代わりにsyn scan(-sS)、標準にフォールバックTCP接続スキャン(-sT)。これは機能的にはnetcatと同等ですが、Niceマルチホストの高速機能を備えています。

例:

not-root$ nmap -sT google.com
Starting Nmap 7.70 ( https://nmap.org ) at 2018-11-04 21:01 GMT
Nmap scan report for google.com (172.217.23.14)
Host is up (0.12s latency).
rDNS record for 172.217.23.14: lhr35s01-in-f14.1e100.net
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https
23
Landak

Perlがオプションの場合、その IO::Socket 特定のホストとポートへの接続をテストするモジュール。以下のスクリプトは、プロトコルとしてハードコードTCP=です(これはtelnetが使用するものです):

#!/usr/bin/Perl -w

# tries to connect to the given IP and port (tcp)

use strict;
use IO::Socket;

my $desthost = shift or die "Usage: $0 Host port\n";
my $destport = shift or die "Usage: $0 Host port\n";

gethostbyname($desthost) || die "Invalid Host given\n";

my $handle = IO::Socket::INET->new(
        PeerAddr => $desthost,
        PeerPort => $destport,
        Proto    => 'tcp')
    or die "can't connect to $desthost:$destport: $!\n";
close $handle;
print "Success!\n"

閉じたポートからの出力例:

$ ./above-script kafka02 6667
can't connect to kafka02:6667: Connection refused

開いているポートからの出力例:

$ ./above-script kafka02 4200
Success!
4
Jeff Schaller

デバイスファイル/ dev/tcpおよび/ dev/udpをtelnetの代わりに使用できます。例:echo 0 > /dev/tcp/103.64.35.86/6667。次に、echo $?を使用して終了ステータスを確認します。終了ステータスが0の場合、ポートは開いています。終了ステータスがゼロ以外の場合、ポートは閉じています。 udpパケットをチェックするには、echo 0 > /dev/udp/103.64.35.86/6667を使用します。

2
al mamun

「カール」は生活を楽にします。ルートは必要ありません。 curlはすべてのLinuxシステムで簡単に利用できます

1)ポートが開いていない場合、以下の出力が表示されます

[niti@SourceServerName ~]$ curl -vv telnet://DestinationServerName:80

* About to connect() to DestinationServerName port 80 (#0)
*   Trying 192.168.0.100...

2)ポートが開いている場合、以下の出力が表示されます

[niti@SourceServerName ~]$ curl -vv telnet://DestinationServerName:443

* About to connect() to DestinationServerName port 443 (#0)
*   Trying 192.168.0.100...
* Connected to DestinationServerName (192.168.0.100) port 443 (#0)

CtrlC 出る

1
Niti

私はこのように高速でシンプルな方法を見つけました、throgh Python interpreter(from https://serverfault.com/a/500062/168647 ):

[gryphius@ut ~]$ python
Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2                                                                                                                                                                                                                               
Type "help", "copyright", "credits" or "license" for more information.                                                                                                                                                                                                         
>>> import socket                                                                                                                                                                                                                                                              
>>> conn=socket.create_connection(('gmail-smtp-in.l.google.com',25))                                                                                                                                                                                                           

それまでにエラーがスローされなかった場合、接続は問題ありません。

1
Mariano Paniga
ss -lt 

これは、使用できる別のコマンドです。

0