Überprüfen Sie den Erfolg des Remote-Dateianhangs über ssh

0

Ich möchte regelmäßig Daten an eine entfernte Datei über anhängen ssh und lokal entfernen. Mögen:

cat some_lines_to_append.txt | ssh [email protected] 'cat >> all_lines_collected.txt'
rm some_lines_to_append.txt

Jetzt möchte ich sicher gehen some_lines_to_append.txt wird nur entfernt, wenn die Zeilen erfolgreich übertragen wurden. Wie geht das?

Tut >> Erstellen Sie eine Art Fehlerrückmeldungscode, wenn ein Fehler auftritt oder nicht cat in diesem Fall und wird ssh den Rückkehrcode liefern?

Wille shh selbst liefern Rückkehrcodes ungleich Null in jedem Fall, dass es vorzeitig beendet wurde?

dronus
quelle

Antworten:

1

cat Gibt bei Erfolg 0 (Null) zurück.

Gemäß ssh Handbuch:

EXIT STATUS

  ssh exits with the exit status of the remote command or with 255 if an error occurred.

Also in deinem Fall ist es genug

cat some_lines_to_append.txt |
   ssh [email protected] 'cat >> all_lines_collected.txt' &&
   rm some_lines_to_append.txt ||
   echo 'Error occurred.'
Alex
quelle
Cool. Auch jemand anderes hat es mir erzählt ssh würde in der Tat den Rückkehrcode der aufgerufenen Befehle übergeben. Vielleicht würde die Pipe also einfach funktionieren, ohne den Rückkehrcode über zu erfassen echo $? und rc=...?
dronus
Es scheint einfach cat some_lines_to_append.txt | ssh [email protected] 'cat >> all_lines_collected.txt' && rm some_lines_to_append.txt würde einfach besser funktionieren als zuerst von mir erwartet ...
dronus
Ja, ssh Beendet mit dem Exit-Status des Remote-Befehls oder mit 255, wenn ein Fehler aufgetreten ist. rc = $ (... Code wird benötigt, wenn komplexere Remote-Befehle ausgeführt werden und Sie einige Fehler in der Mitte abfangen möchten, in Ihrem Fall jedoch cat some_lines_to_append.txt | ssh [email protected] 'cat >> all_lines_collected.txt' && rm some_lines_to_append.txt || echo 'Error occurred' ist genug.
Alex
Ich habe meine Antwort so bearbeitet, dass sie Ihren speziellen Bedürfnissen ohne zusätzliche unnötige Informationen entspricht.
Alex
Cool. Manchmal funktioniert der erste Schuss trotz der Erwartung gut.
dronus