Enviando arquivo via netcat

16

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)?

    
por Phil 20.01.2010 / 04:39

4 respostas

26

No seu servidor (A):

nc -l -p 1234 -q 1 > something.zip < /dev/null
No seu "cliente remetente" (B):
cat something.zip | netcat server.ip.here 1234
    
por 20.01.2010 / 16:18
4

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.

    
por 27.02.2015 / 00:25
0

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.

    
por 20.01.2010 / 05:59
0

Computador A: nc -l -p 1234 > filename.txt

Computador B: nc server.com 1234 < filename.txt

Deve funcionar também;)

    
por 06.12.2014 / 14:44

Tags