controlla la porta aperta senza telnet [chiuso]


17

Cosa usano le persone quando Telnet non è installato per verificare che una porta sia aperta e raggiungibile? Ad esempio, usavo la tecnica di telnet <destination>e sapevo che era lì, anche se Telnet non poteva interagire con il sistema dall'altra parte.

Con Windows 2008 telnet non è installato, quindi mi sono perso un po '. Quindi cosa posso usare invece. E qualcosa se non è lì anche in Linux o Solaris, per favore.

Sono un consulente che lavora su diversi siti. Per una serie di motivi (diritti di accesso, modifica dei tempi di controllo, se lo installo qualcuno lo usa l'anno prossimo abbiamo delle responsabilità, ecc.) Non posso installarlo sul server di qualcun altro. Ma una USB o un altro strumento autonomo e non installato sarebbe meraviglioso ...


3
Perché non lo installi?
Chris McKeown,

O installa qualcosa come nmap...
etagenklo,

Prova a usare nmap
Zeeshan il


Risposte:


25

Usa Powershell come un boss


Codice di 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"
}

Trasformalo in un cmdlet

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

Salva come script e utilizzalo sempre

Quindi si utilizza il comando nel prompt di PowerShell o cmd in questo modo:

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

o

PS C:\> telnet.ps1 8.8.8.8 53


4
Puoi anche semplicemente eseguire: New-Object System.Net.Sockets.TcpClient ("IP o DomainName", 80) E otterrai un errore se non riesce a connettersi, o informazioni sull'oggetto creato se la connessione è riuscita.
Tsuushin,

1
Come funziona in termini di chiusura del socket? Ad esempio, so se apro una richiesta Web su IIS, ma non chiudo la connessione, raggiungerà un limite e non potrò più eseguire il test.
Vasili Syrakis,

Buona domanda. Immagino che faccia la stessa cosa della tua risposta (dal momento che noi / noi non la smaltiamo o chiudiamo la presa manualmente); TcpClient dovrebbe ricevere la spazzatura a un certo punto, altrimenti il ​​socket colpirà un timeout di lettura prima di quello. Solo una supposizione, non l'ho provato!
Tsuushin,

1
Se non vuoi preoccuparti di lasciare il socket aperto per un po 'puoi farlo: (New-Object System.Net.Sockets.TcpClient ($ ip, $ port)). Chiudi Lo stesso affare di prima; Errore se non riesci a connetterti, ma lo stamperà se collegato, quindi chiudi correttamente la porta: void Close ()
Tsuushin

41

Ecco diversi modi per testare una porta TCP senza telnet.

BASH ( pagina man )

# 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


arricciare

# 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


Pitone

# 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 Non ero a conoscenza del metodo di arricciatura, molto bello! :)
blong
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.