Você pode canalizar para o ssh e executar um comando remoto. Nesse caso, o comando remoto é cat > big.txt
, o que copiará o stdin no arquivo big.txt
.
echo "Lots of data" | ssh [email protected] 'cat > big.txt'
É fácil e direto, contanto que você possa usar o ssh para conectar-se ao terminal remoto.
Você também pode usar nc
(NetCat) para transferir os dados. No computador de destino (por exemplo, host.example.com):
nc -l 1234 > big.txt
Isso configurará nc
para ouvir a porta 1234 e copiar qualquer coisa enviada para essa porta para o arquivo big.txt
. Então, na máquina de envio:
echo "Lots of data" | nc host.example.com 1234
Este comando informará nc
no lado de envio para se conectar à porta 1234 no receptor e copiar os dados de stdin pela rede.
No entanto, a solução nc
tem algumas desvantagens:
- Não há autenticação; qualquer um poderia se conectar à porta 1234 e enviar dados para o arquivo.
- Os dados não são criptografados, como seria com
ssh
. - Se uma das máquinas estiver atrás de um firewall, a porta escolhida deve estar aberta para permitir a conexão e roteada de maneira adequada, especialmente no lado do recebimento.
- Ambas as extremidades devem ser configuradas de forma independente e simultânea. Com a solução
ssh
, você pode iniciar a transferência de apenas um dos pontos finais.