Saída do pipe do executável para a conexão existente do Netcat

1

Eu abro uma janela de terminal e conecto ao shell usando netcat :

Terminal Window 1: nc hostname port

Em seguida, eu navego para um diretório e abro um arquivo, ... etc (eu precisaria ser capaz de fazer isso sozinho, não automatizá-lo).

Posso então canalizar a saída de um executável no meu computador para a netcat connection?

    
por Nicholas 29.09.2018 / 20:05

1 resposta

0

Você provavelmente poderia fazer isso com um pipe nomeado.

mkfifo ncpipe
nc hostname port < ncpipe
# --- In a galaxy far, far away (another terminal) ---
somecommand > ncpipe

No entanto, existem alguns problemas com isso ... como, se você demorar muito, a conexão pode expirar ou o que quer que seja.

Também é possível fazer isso bidirecionalmente ... Eu usei isso há algum tempo para encaminhar uma porta telnet local, não tenho certeza se ainda funciona:

mkfifo send receive
> send &
> receive &
nc 127.0.0.1 23 < receive > send &
telnet_pid=$!
nc host port < send > receive &
server_pid=$!
wait $server_pid
kill $telnet_pid
rm send receive

De qualquer forma, você pode fazer coisas estranhas com pipes nomeados. No entanto, você também tem que ter cuidado com eles ... se houver um processo antigo que tenha o tubo aberto, uma saída inesperada pode aparecer. Melhor criar um novo cachimbo limpo e brilhante para cada tarefa e excluir quando terminar.

Os encaminhamentos de porta, em particular, são feitos mais facilmente (e com segurança) com o SSH, mas nem sempre estão disponíveis. Se disponível em seu cenário, pode ser preferível fazer apenas:

somecommand | ssh user@host somereceiver
# or the other way around
ssh user@host somecommand | somereceiver
    
por 29.09.2018 / 22:05