
stdout
em um servidor CentOS precisa ser canalizado para stdin
outro 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 ssh
executa 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ê ssh
executar um comando arbitrário em um sistema remoto, o ssh mapeará STDIN
e STDOUT
para 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 STDOUT
coisas normais. Como estamos usando ssh para executar um comando remoto, STDIN é mapeado para STDIN
of 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 netcat
as 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 netcat
completamente 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