web-dev-qa-db-fra.com

vérifier le port ouvert sans telnet

Qu'est-ce que les gens utilisent lorsque Telnet n'est pas installé pour vérifier qu'un port est ouvert et accessible? Par exemple. J'utilisais la technique de telnet <destination> et sachez qu'il était là, même si telnet ne pouvait pas interagir avec le système à l'autre bout.

Avec Windows 2008, telnet n'est pas installé, donc je suis un peu perdu. Alors, que puis-je utiliser à la place. Et quelque chose s'il n'est pas là sous Linux ou Solaris, s'il vous plaît aussi.

Je suis consultant et travaille sur différents sites. Pour un certain nombre de raisons (droits d'accès, horaires de contrôle des modifications, si je l'installe, quelqu'un l'utilisera l'année prochaine, nous avons une certaine responsabilité, etc.) Je ne peux pas installer sur le serveur de quelqu'un d'autre. Mais un USB ou un autre outil autonome non installé serait merveilleux ...

18
Karl

Utilisez Powershell comme un boss


Code de base

$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"
}

Transformez-le en applet de commande

[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"
}

Enregistrer en tant que script et utiliser tout le temps

Ensuite, vous utilisez la commande dans votre PowerShell ou invite cmd comme ceci:

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

ou

PS C:\> telnet.ps1 8.8.8.8 53

25
Vasili Syrakis

Voici plusieurs façons de tester un port TCP sans telnet.

[~ # ~] bash [~ # ~] ( page de manuel )

# 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

# 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
42
skohrs