Use o netcat
- Instale netcat-tradicional ou netcat-openbsd .
-
No lado do receptor, abra um soquete de escuta:
nc -l 1234
em que
1234
é o número da porta a ser ouvida. Por padrão, o netcat usa um soquete TCP. Isso será executado continuamente até receber um EOF. Se você precisar desativá-la, adicione a opção-q -1
(tempo limite de espera negativo - consulte manpage).Opcionalmente, redirecione a saída para um arquivo ou canalize-a, por exemplo:
nc -l 1234 > mylogfile.log
-
No final do remetente, ative o comando e canalize o stdout para o netcat:
mycommand | nc 123.45.67.89 1234
em que
123.45.67.89
é o endereço IP do final de escuta e1234
é o número da porta novamente.Isso será executado continuamente (transmitindo os dados) até que
mycommand
produza um EOF.
Discussão
Como redirecionar a saída de um comando para o loop interno?
Eu não tenho certeza do que você quer dizer com o "circuito interno", mas redirecionar a saída é uma pergunta muito geral para o seu shell.
Eu quero ter certeza de que os dados são enviados toda vez que algo é escrito na saída padrão, e que o tubo não vai esperar para que o comando final (nunca acontece idealmente!). Está certo?
Pipes no shell não vão esperar por um EOF para passar os dados, até onde eu sei.
Se 2 for verdadeiro, existe um sistema de buffer para enviar blocos de dados quando ele atinge apenas um determinado tamanho?
Sim, os buffers gerais nos tubos, conforme descrito na sugestão de ignis em seu comentário : Question em UL:. Desligue o buffer na tubulação
O TCP lidará com buffers no nível do TCP.