FolioPierEstudos de TI

telnet e alternativas (Transporte)

Nota 46 de 54 · 3 min de leitura
Nesta página
  1. O teste com o telnet
  2. Como sair do telnet
  3. Quando o telnet não está instalado

Às vezes, é preciso abrir uma conexão TCP simples e, nos protocolos de texto, conversar diretamente com o serviço. O telnet faz esse teste, e o PowerShell consegue substituí-lo quando o telnet não está instalado.

O teste com o telnet

  • telnet 203.0.113.20 9000: tenta abrir uma conexão com a porta 9000 do endereço público da matriz.

Quando a conexão abre, a janela fica em branco ou mostra a mensagem inicial do serviço. Um banco de dados MySQL, por exemplo, envia alguns caracteres, entre eles a versão do MySQL. Quando a conexão falha, o telnet informa que não foi possível abrir a conexão. O tempo até a falha também informa: uma falha imediata indica recusa, e uma falha que demora indica tempo esgotado.

Nos protocolos de texto, o telnet permite enviar dados e ver a resposta do serviço. Nos protocolos binários ou com criptografia, o telnet prova apenas que a conexão TCP abriu.

Como sair do telnet

  1. A combinação das teclas Ctrl e colchete direito abre o modo de comando do telnet.
  2. O comando quit, digitado nesse modo, encerra o telnet.

Quando o telnet não está instalado

O cliente telnet vem desativado no Windows. Para ativá-lo, o comando a seguir é executado no Prompt de Comando aberto como administrador:

  • dism /online /Enable-Feature /FeatureName:TelnetClient

Quando não é possível instalar nada, o PowerShell faz o mesmo trabalho, inclusive em versões antigas do Windows, que não têm o Test-NetConnection. Os comandos são executados um por vez:

  • $c = New-Object System.Net.Sockets.TcpClient("192.168.0.50", 9000): abre a conexão com o endereço e a porta indicados;
  • $s = $c.GetStream(): obtém o canal de comunicação da conexão;
  • $w = New-Object System.IO.StreamWriter($s): prepara o envio de texto;
  • $r = New-Object System.IO.StreamReader($s): prepara a leitura das respostas;
  • $w.WriteLine("COMANDO"): escreve uma linha de texto para o serviço;
  • $w.Flush(): envia o que foi escrito;
  • $r.ReadLine(): lê uma linha da resposta;
  • $c.Close(): encerra a conexão.

Se o primeiro comando terminar com uma mensagem de erro, a conexão não abriu. Para um simples teste de porta, basta esse primeiro comando.

No suporte

O telnet é uma forma comum de testar, a partir da loja, a porta de comunicação da matriz. Para diferenciar a recusa do tempo esgotado, convém observar quanto tempo o telnet leva para falhar.

Para guardar

  • O telnet abre uma conexão TCP simples.
  • A interação com o serviço só faz sentido nos protocolos de texto.
  • Uma falha imediata indica recusa, e uma falha demorada indica tempo esgotado.
  • O PowerShell substitui o telnet quando ele não está instalado.
O telnet abriu a conexão na porta do serviço, e a janela ficou em branco. Isso prova que o sistema vai funcionar?

Não. O teste prova que a conexão TCP abriu. O protocolo da aplicação, a autenticação e as eventuais portas adicionais ainda precisam funcionar.

Em um computador com uma versão antiga do Windows, sem o Test-NetConnection e sem o telnet instalado, como testar a porta 3306 do servidor da loja?

Com o primeiro comando do PowerShell, que cria a conexão: $c = New-Object System.Net.Sockets.TcpClient("192.168.1.10", 3306). Se o comando terminar sem erro, a porta aceitou a conexão. Com permissão de administrador, também é possível ativar o telnet pelo comando dism.

Publicado a partir do Obsidian · FolioPier