Existem provavelmente muitas maneiras de fazer isso.
Com o netcat
O problema com o netcat é que ele fecha a conexão assim que detecta um fim de arquivo. A implementação GNU de netcat tem algumas opções ( -k ou -w -1 ) para manter uma instância de escuta aberta indefinidamente, mas nem funciona. O que funciona é a versão nmap do netcat , chamado ncat .
No seu pc, instale o pacote nmap e, em seguida, edite:
mkfifo return_pipe
ncat -k -l 12345 0<return_pipe| ncat -C 192.168.0.10 35000 1>return_pipe &
Agora você pode transferir tudo o que quiser, em muitos grupos diferentes, por meio de
echo Ciao | ncat localhost 12345
cat somefile.txt | ncat localhost 12345
sem que a conexão caia, desde que o seu ouvinte coopere ( isto é, , ele não deixa de escutar após o primeiro fim de arquivo). Ou você pode simplificar essa parte usando um pipe nomeado : de um terminal diferente daquele em que você emitiu o primeiro comando,
mkfifo mypipe
tail -f mypipe | ncat localhost 12345 &
echo Ciao > mypipe
cat somefile.txt > mypipe
A mensagem de retorno do seu dispositivo está agora no pipe nomeado return_pipe . O comando
tail -f return_pipe >> responses
acrescenta a resposta do dispositivo a um arquivo chamado responses .
Sem netcat
Isso foi apontado por Ipor Sircer (nice !, +1 de mim). Mas eu faria de maneira um pouco diferente,
exec 3>/dev/tcp/192.168.0.10/35000
exec 4</dev/tcp/192.168.0.10/35000
exec 4>>somefile.out
echo "Ciao" >&3
cat somefile.txt >&3
se você também quiser acompanhar seus comandos,
echo Ciao | tee -a file_with_my_commands 1>&3
cat somefile.txt | tee -a file_with_my_commands 1>&3
e, quando você terminar com esta comunicação,
exec 3>&-
exec 4>&-