Wie zu Lesen die Datei über ssh/scp direkt
Ich habe ein Programm geschrieben in C/C++ , liest zwei Dateien, und erstellen Sie dann einige Berichte. Der typische Arbeitsablauf ist wie folgt:
1> scp user@server01:/temp/file1.txt ~/then input my password for the prompty
2> my_program file1.txt localfile.txt
Gibt es eine Möglichkeit, dass ich lasse mein Programm direkt behandeln den remote-Datei-ohne Sie explizit kopieren der Datei auf den lokalen ersten? Ich habe versucht, den folgenden Befehl aus, aber es funktioniert nicht für mich.
> my_program <(ssh user@server01:/temp/file1.txt) localfile.txt
InformationsquelleAutor q0987 | 2014-12-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
ssh user@host "cat /temp/file.txt"
.Können Sie diese verwenden, um umleiten der Standardeingabe von Ihrem Programm:
ssh user@host "cat /temp/file.txt" | my_program
oder können Sie tatsächlich rufen Sie dies in Ihrem Programm mit fork/exec. Oder wie du es beschrieben zum erzeugen einer temporären Datei:my_program <(ssh user@host "cat /temp/file.txt")
Anderen Optionen wäre die Verwendung von sshfs mit fuse oder mit ssh (oder VFS) Bibliothek in Ihrem Programm.
Ihr Programm braucht, um von stdin Lesen für mein Beispiel. Manche machen das automatisch, wenn Sie keine input-Datei, einige tun es, wenn Sie angeben, " - " als Dateiname.Wenn Ihr Programm nicht tun, dann müssen Sie das temp-Datei-Funktion, die Sie vorgeschlagen, die in Ihrer Frage, ich Stelle die Antwort. Die Haupt-Farbe, meine Antwort ist mit "Katze".
auch werden Sie wahrscheinlich benötigen, um das setup ohne Passwort ssh mit authorized keys sonst sind Sie gehen zu müssen, die Sie Programm senden Sie Ihre pssword
InformationsquelleAutor eckes
Wenn Sie wirklich auf Red Hat Linux, sollte dies funktionieren:
Mit einem einzigen
-
statt/dev/stdin
können auch funktionieren, aber es hängt davon ab, obmy_program
geschrieben wurde, zu interpretieren als argument-
wie "Lesen Sie diese Datei von der Standardeingabe (stdin".Auch dies könnte nicht funktionieren, wenn
my_program
erwartet, dass Sie in der Lage zu suchen um in der ersten Datei (I/O-streams sind in der Regel non-seekable), aber wenn alle es tut, ist Lesen vom ersten byte bis zum letzten byte, sollte es OK sein.InformationsquelleAutor twalberg