Como posso usar o cliente telnet da linha de comando para abrir uma conexão bruta - como o PuTTY?

8

Preciso usar o telnet para conversar com um servidor de soquete que não seja um servidor Telnet padrão. Eu não quero nenhuma negociação ou interferência do Telnet nos dados.

Está disponível como 'modo bruto' no PuTTy e preciso da mesma funcionalidade no Linux.

Éden
fonte
Eu adicionei que preciso de um cliente telnet de linha de comando (para que o Putty no Linux não funcione para mim).
Eden
Estou conectando a um produto MOXA que é um servidor TCP para conectar remotamente a uma porta serial (de um produto herdado). Ele precisa ser simples, para que todas as teclas sejam enviadas como estão.
217 Eden Éden
Basicamente, eu preciso da funcionalidade "do tipo telnet", mas sem o protocolo. Eu também tentei o netcat (sugerido acima), mas isso não funcionou bem - ele está no modo de edição de linha e as teclas pressionadas como ^ C não são passadas.
217 Eden Éden
Como outro ponteiro, dê uma olhada socat, é muito mais cheio de recursos do que netcat; talvez você possa utilizá-lo.
sr_

Respostas:

11

Use o netcat, ele fornece soquetes brutos para a linha de comando, um utilitário muito útil, geralmente eu o uso para mover dados entre servidores quando a criptografia não é necessária, por exemplo:

Servidor1

# nc -l -p 1234 | zcat | mysql -u root databaseName

Servidor2

# mysqldump -u root databaseName | gzip | nc Server1 1234
Geoffrey
fonte
Esta é uma dica incrível! No entanto, quando tentei entre duas janelas de terminal no MacOS, a primeira linha apresentou um erro. Minha página de manual para nc diz que é um erro usar -p com -l. Funcionou como um campeão quando eu omiti o -p
RufusVS
5

Correndo o risco de parecer estúpido, por que não usar o PuTTY? Se você já gosta da funcionalidade que ela oferece, basta executá-la. PuTTY está disponível para Linux ou Windows

Como já apontado nos comentários, o telnet não é bruto - ele espera que certos protocolos sejam seguidos.

Rory Alsop
fonte
1
+1 Rory. Telnet não é cru. Use 'definir opções' no telnet> prompt e você verá os protocolos em ação.
Stephen Quan
Putty "RAW" modo não é realmente RAW. Quando você pressiona Enter, envia CR / LF.
eddyq 10/03
2

Você pode usar o telnet para conectar-se a qualquer porta, desde que haja algo ouvindo essa porta e ela não seja bloqueada por um firewall.

telnet alt1.aspmx.l.google.com 25
telnet google.com 80

Tudo vai funcionar bem. No entanto, você deve saber qual protocolo é usado pela outra extremidade da conexão, caso contrário, é meio inútil.

Observe que o telnet envia pacotes não criptografados.

Sardathrion - contra o abuso de SE
fonte
5
Cuidado: o telnet parece "bruto", mas não é. Já existe algum nível de protocolo envolvido, mesmo que limitado. O que você está tentando alcançar aqui?
Ouki
@Ouki, o protocolo TELNET é bastante complexo, com certeza. O programa telnet normalmente retornará ao modo de operação bruta, se não estiver conectado a um servidor TELNET.
vonbrand 23/02
0

Muito antigo, mas achei que funcionava para uma unidade MOXA:

stty raw && nc <ip> 23 && stty sane
smp
fonte
0

Ainda relevante depois de todos esses anos.

Isso funciona bem na ~/.bash_aliasesabertura de um moxashell em uma guia sem o eco local: (parâmetro é o número da porta moxa)

function moxat(){
  mate-terminal --tab --title="moxa1 $1" -e "bash -c 'stty raw -echo && \ 
  nc <ip> $1 && stty sane'" 
}
OMR
fonte
-1

Use esta linha exata:

sudo socat tcp-l:2023,reuseaddr,fork exec:/bin/login,pty,setsid,setpgid,stderr,ctty

Isso permitirá que você se conecte com um soquete bruto do Moxa e obtenha um prompt de linha de comando na máquina host. De lá, você pode Telnet ou SSH à vontade para qualquer sistema com facilidade.

Pyrofer
fonte