Shell interativo via telnet

0

Meu plano é oferecer um servidor de rotas, que é um pequeno programa interativo, via telnet para o mundo. Assim: telnet: //route-server.he.net

Como um exemplo mínimo, eu começaria com um simples bash, oferecido via socat:

socat TCP-LISTEN:9001,reuseaddr,crnl,fork EXEC:bash,pty,stderr,sane,setsid,sigint,echo=0

Agora eu conecto usando o telnet:

$ telnet localhost 9001

E parece funcionar primeiro:

$ echo foo
foo

O problema é: alguns caracteres especiais como ESC, teclas de seta, etc. são impressos como seus códigos de escape de shell. Exemplo para 'seta para cima':

$ ^[[A
foo

Além disso, clicar / rolagem / ... também imprime códigos de escape:

$ ^[[M r>^[[M#r>

A questão é: como posso corrigir esse comportamento de forma que os clientes possam continuar usando o telnet sem quaisquer opções do lado do cliente ou hacks, como acontece nos servidores de rota existentes.

    
por 9er 30.08.2016 / 17:11

1 resposta

0

Com base no comentário do ipors, conseguimos executar o serviço com a seguinte configuração:

xinetd roda telnetd da GNU Inetutils ( ftp://ftp.gnu.org/gnu/inetutils/ )

server = /path/to/custom/telnetd

No server_args, definimos um exec-String que aponta para um script wrapper para executar nosso birdc com as opções necessárias

server_args = -h -E "/opt/bird-telnet.sh"

/opt/bird-telnet.sh parece

#!/bin/bash
/usr/sbin/birdc -r -s /var/run/bird/bird.ctl
    
por 02.09.2016 / 17:48