Como enviar dados através de tcp a partir da linha de comando?

3

Eu gostaria de enviar dados de uma máquina na linha de comando para outra máquina através do tcp. Eu acho que eu poderia escrever um servidor de soquete, mas isso já deve ser implementado. Por exemplo eu poderia usá-lo para xz um arquivo e enviá-lo pela rede para o outro lado em uma porta especificada, onde eu poderia decodificá-lo e salvá-lo:

máquina A: strarc -c -d:c:/windows | xz -c -z - | magicsend -p 80 -h 192.168.1.100 máquina B: magicreceive -p 80 | xz -d -f - | strarc -x -d:x:/windows

Eu gostaria de fazer isso no Linux e / ou Windows com ferramentas de código aberto. Portanto, as ferramentas do Linux que têm uma porta do Windows não-oficial são preferíveis. :)

Um exemplo de linha de comando é muito apreciado.

(Note que em um exemplo do Linux eu faria cat /vmlinuz ao invés de strarc , certeza de que não é bem equivalente.))

    
por n611x007 18.04.2013 / 23:26

3 respostas

3

Use o netcat. Veja a seção "CLIENT / SERVER" do "man netcat". Uma máquina B:

nc -l 1234 | xz -c > sammy.xz

e na máquina A:

cat sammy | nc 192.168.1.100 1234

Observe que pode haver implicações de segurança para deixar as portas abertas dessa maneira.

Como mpy aponta, é mais eficiente em termos de largura de banda de rede para compactar no lado de envio:

xz -c sammy | nc 192.168.1.100 1234

E apenas salve no lado de recebimento:

nc -l 1234 > sammy.xz
    
por 18.04.2013 / 23:49
2

Netcat deve atender às suas necessidades; Eu não tenho a documentação à mão, então não posso ter certeza, mas acho que o comando do lado de envio seria [...] | nc -h192.168.1.100 -p80 , enquanto o lado de recebimento usaria nc -l -p80 | [...] .

    
por 18.04.2013 / 23:48
1

Já que você precisa logar remotamente em pelo menos uma das máquinas (para executar magicsend ou magicreceive) você poderia usar ssh?

Os clientes ssh são fáceis de encontrar no Windows (basta instalar o cygwin, por exemplo). Os servidores ssh também são fáceis de encontrar, mas podem ser mais difíceis de instalar / configurar.

algo assim se você estiver no console da máquina A e a máquina B for remota:

máquina A: strarc whatever | xz -c -z - | ssh me@machineB '(xz -d -f - | strarc somethingelse)'

ou se você estiver no console da máquina B e precisar fazer login remoto na máquina A, então:

máquina B: ssh me@machineA '(strarc whatever | xz -c -z -)' | xz -d -f - | strarc somethingelse

    
por 20.04.2013 / 00:28