Enviando alguma entrada para um processo, depois retomando a entrada da linha de comando

4

Eu tenho um programa de terminal interativo, que aceita stdin (telnet por exemplo).

Eu quero enviar alguma entrada antes de interagir com ela, assim:

echo "Hello" | telnet somewhere 123

Mas isso só envia Hello e mata o telnet depois. Como posso manter o telnet ativo e direcionar a entrada para ele?

    
por Rogach 10.03.2012 / 17:11

1 resposta

3

Você não pode mudar o que o STDIN do telnet está vinculado depois de iniciar, mas pode substituir o eco simples por algo que irá executar mais de uma ação - e deixar a segunda ação "copiar a entrada do usuário no destino" :

{ echo "hello"; cat; } | telnet somewhere 123

Você pode, naturalmente, substituir o cat por qualquer coisa que copie do usuário e envie para o telnet.

Tenha em mente que isso ainda será diferente de apenas digitar no processo. Você anexou um pipe a STDIN, em vez de um TTY / PTY, portanto, o telnet, por exemplo, não conseguirá ocultar uma senha digitada.

    
por 10.03.2012 / 17:14