Kann ich stdout auf einem Server an stdin auf einem anderen Server weiterleiten?

Kann ich stdout auf einem Server an stdin auf einem anderen Server weiterleiten?

stdoutauf einem CentOS-Server muss auf einen anderen CentOS-Server weitergeleitet werden stdin. Ist das möglich?

Aktualisieren

ScottPack, MikeyB und jofel haben alle gültige Antworten. Ich habe Scott die Antwort gegeben, denn obwohl meine Frage Sicherheit nicht als Voraussetzung spezifizierte, ist es immer gut, auf Nummer sicher zu gehen. Die Vorschläge der anderen beiden Kollegen werden jedoch auch funktionieren.

Antwort1

Dies ist ein uneingeschränktes Ja.

Wenn man sshmit einen Befehl auf einem Remote-Server ausführt, führt es eine Art ausgefallene interne Eingabe-/Ausgabeumleitung durch. Tatsächlich finde ich, dass dies eine der subtil netteren Funktionen von OpenSSH ist. Insbesondere wenn Sie mit einen beliebigen Befehl auf einem Remote-System ausführen, wird ssh und auf das des ausgeführten Befehls sshabgebildet .STDINSTDOUT

Nehmen wir als Beispiel an, Sie möchten ein Backup-Tarball erstellen, es aber nicht lokal speichern wollen oder können. Werfen wir einen Blick auf diese Syntax:

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

Wir erstellen ein Tarball und schreiben es in STDOUT, normales Zeug. Da wir SSH verwenden, um einen Remote-Befehl auszuführen, wird STDIN auf von abgebildet STDIN. catWas wir dann in eine Datei umleiten.

Antwort2

Eine praktische Möglichkeit zum Übertragen von Daten zwischen Hosts, wenn Sie sich keine Gedanken über die Sicherheit der Leitung machen müssen, ist die Verwendung netcatan beiden Enden der Verbindung.

Dadurch können Sie sie auch asynchron einrichten:

Führen Sie auf dem „Empfänger“ (eigentlich handelt es sich um eine bidirektionale Kommunikation, aber es ist einfacher, es sich so vorzustellen) Folgendes aus:

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

Und auf dem „Absender“ führen Sie Folgendes aus:

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

Antwort3

Ein sehr leistungsfähiges Werkzeug zum Erstellen uni- und bidirektionaler Verbindungen istsocat. Um einen kurzen Einblick in die Möglichkeiten zu erhalten, schauen Sie sich die Beispiele in dermanpage.

Es ersetzt netcatähnliche Tools vollständig und unterstützt SSL-verschlüsselte Verbindungen. Für Anfänger ist es vielleicht nicht einfach genug, aber es ist zumindest gut zu wissen, dass es existiert.

Antwort4

Versuchen Sie, Ihren öffentlichen SSH-Schlüssel mit nur einem Befehl auf einem anderen Host abzulegen

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

verwandte Informationen