Posso canalizar stdout em um servidor para stdin em outro servidor?

Posso canalizar stdout em um servidor para stdin em outro servidor?

stdoutem um servidor CentOS precisa ser canalizado para stdinoutro servidor CentOS. Isso é possível?

Atualizar

ScottPack, MikeyB e Jofel têm respostas válidas. Dei a resposta a Scott porque, embora minha pergunta não especificasse a segurança como um requisito, é sempre bom estar seguro. Contudo, as sugestões dos outros dois bolsistas também funcionarão.

Responder1

Este é um sim descarado.

Quando alguém sshexecuta um comando em um servidor remoto, ele executa algum tipo de redirecionamento interno sofisticado de entrada/saída. Na verdade, acho que esse é um dos recursos sutilmente mais interessantes do OpenSSH. Especificamente, se você sshexecutar um comando arbitrário em um sistema remoto, o ssh mapeará STDINe STDOUTpara o comando que está sendo executado.

Para fins de exemplo, vamos supor que você queira criar um tarball de backup, mas não queira ou não possa armazená-lo localmente. Vamos dar uma olhada nesta sintaxe:

$ tar -cf - /path/to/backup/dir | ssh remotehost "cat - > backupfile.tar"

Estamos criando um tarball e gravando-o em STDOUTcoisas normais. Como estamos usando ssh para executar um comando remoto, STDIN é mapeado para STDINof cat. Que então redirecionamos para um arquivo.

Responder2

Uma maneira conveniente de canalizar dados entre hosts quando você não precisa se preocupar com a segurança da rede é usar netcatas duas extremidades da conexão.

Isso também permite configurá-los de forma assíncrona:

No "receptor" (na verdade, você terá comunicação bidirecional, mas é mais fácil pensar assim), execute:

nc -l -p 5000 > /path/to/backupfile.tar

E no "remetente", execute:

tar cf - /path/to/dir | nc 1.2.3.4 5000

Responder3

Uma ferramenta muito poderosa para criar conexões uni e bidirecionais ésocat. Para uma breve olhada nas possibilidades, veja os exemplos em seupágina de manual.

Ele substitui netcatcompletamente ferramentas semelhantes e tem suporte para conexões criptografadas SSL. Para iniciantes, pode não ser simples o suficiente, mas pelo menos é bom saber que existe.

Responder4

Tente colocar sua chave pública ssh em outro host apenas com um comando

ssh [email protected] 'cat >> .ssh/authorized_keys' < .ssh/id_rsa.pub

informação relacionada