telnetなしでポートが開いていることを確認[クローズ]


17

ポートが開いていて到達可能であることを確認するためにTelnetがインストールされていない場合、人々は何を使用しますか?たとえばtelnet <destination>、telnetが相手側のシステムとやり取りできなかったとしても、私はかつてその手法を使用していたことを知っていました。

Windows 2008では、telnetがインストールされていないため、少し迷っています。代わりに何を使用できますか。また、LinuxまたはSolarisにない場合もあります。

私はさまざまなサイトで働くコンサルタントです。いくつかの理由(アクセス権、制御時間の変更、それをインストールした場合、来年誰かが使用する責任があります)など、他の人のサーバーにインストールできません。しかし、USBまたはその他の自己完結型のインストールされていないツールは素晴らしいでしょう...


3
なぜインストールしないのですか?
クリスマッキーン

またはのようなものをインストールnmap...
etagenklo

使用してみてくださいnmapのを
Zeeshan


回答:


25

Powershellをボスのように使用する


基本コード

$ipaddress = "4.2.2.1"
$port = 53
$connection = New-Object System.Net.Sockets.TcpClient($ipaddress, $port)

if ($connection.Connected) {
    Write-Host "Success"
}
else {
    Write-Host "Failed"
}

コマンドレットに変える

[CmdletBinding()]
Param(
  [Parameter(Mandatory=$True,Position=1)]
   [string]$ip,

   [Parameter(Mandatory=$True,Position=2)]
   [int]$port
)

$connection = New-Object System.Net.Sockets.TcpClient($ip, $port)
if ($connection.Connected) {
    Return "Connection Success"
}
else {
    Return "Connection Failed"
}

スクリプトとして保存し、常に使用する

次に、powershellまたはcmdプロンプトで次のようにコマンドを使用します。

PS C:\> telnet.ps1 -ip 8.8.8.8 -port 53

または

PS C:\> telnet.ps1 8.8.8.8 53


4
New-Object System.Net.Sockets.TcpClient( "IP or DomainName"、80)を実行することもできます。接続できない場合はエラーが発生し、接続が成功した場合は作成されたオブジェクトに関する情報が表示されます。
ツシン

1
ソケットを閉じるという点でそれはどのように機能しますか?たとえば、IISへのWebリクエストを開いたが、接続を閉じない場合、それは制限に達し、もうテストできなくなります。
ヴァシリシラキス

良い質問。私はあなたの答えと同じことをすることを想像します(あなた/私たちはそれを処分したり、ソケットを手動で閉じたりしないので); TcpClientは、ある時点でガベージコレクションを取得する必要があります。そうしないと、ソケットはその前に読み取りタイムアウトになります。ただの推測、テストしていない!
ツシン

1
ソケットをしばらく開いたままにしたくない場合は、これを行うことができます:(New-Object System.Net.Sockets.TcpClient($ ip、$ port))。Close前と同じ取引。接続できない場合はエラーになりますが、接続するとポートが正常に閉じられた場合は出力されます:void Close()
Tsuushin

41

telnetを使用せずにTCPポートをテストする方法はいくつかあります。

BASHmanページ

# cat < /dev/tcp/127.0.0.1/22
SSH-2.0-OpenSSH_5.3
^C

# cat < /dev/tcp/127.0.0.1/23
bash: connect: Connection refused
bash: /dev/tcp/127.0.0.1/23: Connection refused


カール

# curl -v telnet://127.0.0.1:22
* About to connect() to 127.0.0.1 port 22 (#0)
*   Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 22 (#0)
SSH-2.0-OpenSSH_5.3
^C

# curl -v telnet://127.0.0.1:23
* About to connect() to 127.0.0.1 port 23 (#0)
*   Trying 127.0.0.1... Connection refused
* couldn't connect to host
* Closing connection #0
curl: (7) couldn't connect to host


Python

# python
Python 2.6.6 (r266:84292, Oct 12 2012, 14:23:48)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> clientsocket.connect(('127.0.0.1', 22))
>>> clientsocket.send('\n')
1
>>> clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> clientsocket.connect(('127.0.0.1', 23))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused


Perl

# perl
use IO::Socket::INET;
$| = 1;
my $socket = new IO::Socket::INET(
  PeerHost => '127.0.0.1',
  PeerPort => '22',
  Proto => 'tcp',
);
die "cannot connect to the server $!\n" unless $socket;
print "connected to the server\n";
^D
connected to the server

+1カール方法を知らなかった、非常にクール!:)
16年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.