Comment envoyer une sortie de commande unix d'un serveur à un autre serveur?

10

Comment rediriger la sortie d'une commande unix d'un serveur vers un autre serveur.

Je devrais pouvoir envoyer la sortie de la commande unix depuis le serveur-1. Ensuite, je devrais être en mesure de recevoir la sortie dans Server-2 et de l'écrire dans un fichier.

vinod
la source

Réponses:

20

Général, vous pouvez toujours faire:

<command> | ssh user@remote-server "cat > output.txt"

Il enregistre la sortie de <command>dans un output.txtfichier sur un serveur distant.

Dans votre cas, sur Server-1:

echo "qwerty" | ssh user@Server-2 "cat > output.txt"

Si deux serveurs n'ont pas de connectivité, mais que vous pouvez ssh vers les deux serveurs, à partir de la machine locale, vous pouvez faire:

ssh user@Server-1 "<command>" | ssh user@Server-2 "cat > output.txt"
cuonglm
la source
J'ai essayé et j'obtiens une erreur de connexion expirée .. Je pense qu'il n'y a pas de connectivité entre deux serveurs .. Y a-t-il une autre manière ??
vinod
1
@vinod: C'est le problème de connectivité de deux serveurs, vous ne pouvez pas le faire si deux serveurs n'ont pas de connectivité. Assurez-vous que vous pouvez ssh de Server-1 à Server-2. Pouvez-vous passer de la machine locale aux deux serveurs?
cuonglm
oui ... je peux ssh les deux serveurs séparément de la machine locale
vinod
6

Tu peux courir:

ssh remote_server "command" > file_on_local_host.txt

ou utilisez la sortie comme entrée pour la commande locale:

ssh remote_server "remote_command" | local_command

Ruslan Gerasimov
la source
1

Comme vous ne pouvez pas vous connecter directement du serveur 1 au serveur 2, vous pouvez l'utiliser, en ayant votre machine locale au milieu:

ssh server1 command | ssh server2 "cat > output.txt"
pqnet
la source