Ausführen eines Remote-Skripts auf einer lokalen Datei über SSH

Ausführen eines Remote-Skripts auf einer lokalen Datei über SSH

Ich habe einen Remote-Computer mit einer Linux-Binärdatei, die eine Reihe von Argumenten und eine Textdatei akzeptiert. Die Ausgabe eines Programms wird in stdout geschrieben, das ich immer in eine Textdatei schreibe. Ich habe festgestellt, dass ich eine Datendatei auf den Remote-Computer kopiert, den Befehl auf dieser Datei ausgeführt und die resultierende Datei zurückkopiert habe. Dies ist zeitaufwändig und fehleranfällig.

Ist es mit SSH und den Standard-Linux-Tools möglich, eine Remote-Binärdatei über SSH auf einer lokalen Datei auszuführen, ohne sie zuerst auf den Remote-Computer zu kopieren?

Idealerweise hätte ich gerne ein Bash-Skript auf meinem lokalen Rechner. Ich gebe die Datendatei als Argument an und es führt die gesamte SSH-Verbindung, das Senden von Daten usw. durch und gibt das Ergebnis lokal auf stdout aus.

Mein lokaler Rechner ist Mac OS X und der Remote-Rechner Linux. Nein, ich kann die Linux-Binärdatei nicht unter Mac OS X zum Laufen bringen.

Update: Das Tool auf dem Remote-Rechnerdürfenvon stdin lesen.

Antwort1

Wenn das Tool die Standardeingabe lesen kannanstatteine Textdatei und stellt die Ausgabe über stdout bereit. Diese bashSyntax sollte es remote ausführen, ohne dass Dateien kopiert werden müssen:

< "/local_path/to/input_file" ssh user@remote 'the_tool -some_option1 -option2'

Hinweis: Einige Befehle benötigen spezielle Optionen oder Argumente (z. B. -), um stdin zu lesen; einige lesen stdin, obwohl keine Eingabedatei angegeben ist. Ich weiß nichts über Ihr Tool, daher ist dies ein allgemeiner Ansatz, den Sie möglicherweise anpassen müssen.

Die Umleitung der Ausgabe in eine lokale Datei mit >oder (local) teefunktioniert ebenfalls:

< "/local_path/to/input_file" ssh user@remote 'the_tool -some_option1 -option2' | tee "/local_path/to/output_file"

Beispiel: remote catverkettet local und remote /etc/hosts:

< "/etc/hosts" ssh user@remote 'cat - /etc/hosts'

verwandte Informationen