No seu servidor (A):
nc -l -p 1234 -q 1 > something.zip < /dev/nullNo seu "cliente remetente" (B):
cat something.zip | netcat server.ip.here 1234
Estou usando algo assim para enviar arquivos de um computador para outro:
Para servir arquivo (no computador A):
cat something.zip | nc -l -p 1234
Para receber arquivo (no computador B):
netcat server.ip.here. 1234 > something.zip
Minha pergunta é ... posso fazer o oposto? Digamos que eu tenha arquivo no computador B e eu quero enviá-lo para A, mas não da maneira que escrevi acima, mas fazendo com que o computador receba o arquivo (A) seja 'ouvindo' servidor e conecte o computador que está 'enviando' arquivo B) para servidor e enviar o arquivo? É possível? Eu acho que pode ser, mas não sei como fazer isso.
No caso de minha explicação acima ser confusa: Como faço para enviar um arquivo para 'servidor' em vez de servir o arquivo no servidor e depois retirá-lo (como eu fiz acima)?
Como nota, se você quiser também preservar permissões de arquivo, propriedade e timestamps, usaremos tar com netcat para fazer transferências de diretórios e arquivos.
No sistema de recebimento:
nc -l -p 12345 -q 1 | tar xz -C /path/to/root/of/tree
Do sistema de envio:
tar czf - ./directory_tree_to_xfer | nc <host name or IP address of receiving system> 12345
Espero que ajude.
Inicie outra instância do netcat no computador B. Basta fazer o que você fez no computador A, mas servi-lo de B. Dê ao novo servidor uma nova porta.
Computador A: nc -l -p 1234 > filename.txt
Computador B: nc server.com 1234 < filename.txt
Deve funcionar também;)