verificar porta aberta sem telnet [fechado]

16

O que as pessoas usam quando o Telnet não está instalado para verificar uma porta está aberto e acessível? Por exemplo. Eu costumava usar a técnica de telnet <destination> e sei que estava lá, mesmo que o telnet não pudesse interagir com o sistema do outro lado.

Com o Windows 2008, o telnet não está instalado, por isso fiquei um pouco perdido. Então, o que posso usar em vez disso? E se algo não estiver lá no Linux ou no Solaris, por favor também.

Eu sou um consultor que trabalha em sites diferentes. Por uma série de razões (direitos de acesso, tempos de controle de alterações, se eu instalá-lo, alguém o usa no próximo ano, temos alguma responsabilidade, etc.) Não consigo instalar no servidor de outra pessoa. Mas um USB ou outra ferramenta independente e não instalada seria maravilhosa ...

    
por Karl 09.12.2013 / 09:53

2 respostas

24

Use o Powershell como um chefe

Código básico

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

Transforme-o em um 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"
}

Salvar como um script e usar o tempo todo

Então você usa o comando no seu comando powerhell ou cmd da seguinte forma:

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

ou

PS C:\> telnet.ps1 8.8.8.8 53

    
por 09.12.2013 / 11:25
38

Aqui estão várias maneiras diferentes de testar uma porta TCP sem telnet.

BASH ( página de manual )

# 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
    
por 09.12.2013 / 15:18

Tags