Você pode canalizar para o ssh e executar um comando remoto. Nesse caso, o comando remoto é o cat > big.txt
que copiará stdin no big.txt
arquivo.
echo "Lots of data" | ssh user@example.com 'cat > big.txt'
É fácil e direto, desde que você possa usar o ssh para conectar-se à extremidade remota.
Você também pode usar nc
(NetCat) para transferir os dados. Na máquina receptora (por exemplo, host.example.com):
nc -l 1234 > big.txt
Isso será configurado nc
para escutar a porta 1234 e copiar qualquer coisa enviada para essa porta para o big.txt
arquivo. Em seguida, na máquina de envio:
echo "Lots of data" | nc host.example.com 1234
Este comando informará nc
no lado de envio para conectar-se à porta 1234 no receptor e copiar os dados do stdin pela rede.
No entanto, a nc
solução tem algumas desvantagens:
- Não há autenticação; qualquer um poderia conectar-se à porta 1234 e enviar dados para o arquivo.
- Os dados não são criptografados, como seria com
ssh
.
- Se qualquer uma das máquinas estiver protegida por um firewall, a porta escolhida deverá ser aberta para permitir a conexão e o roteamento corretamente, principalmente na extremidade receptora.
- Ambas as extremidades devem ser configuradas independentemente e simultaneamente. Com a
ssh
solução, você pode iniciar a transferência de apenas um dos pontos de extremidade.