Shell-Skript, das ein Protokoll erstellt, wenn die Datei nicht an den Remote-Server gesendet wird

Shell-Skript, das ein Protokoll erstellt, wenn die Datei nicht an den Remote-Server gesendet wird

Ich habe dieses kleine Skript, das grundsätzlich die Rsync-Synchronisierung von Dateien zwischen Remote-Servern durchführt. Zur Authentifizierung wurde ein SSH-Schlüssel generiert.

nur das ist im Skript vorhanden

rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved

grundsätzlich möchte ich eine Protokollmethode für dieses Skript erstellen, nichts Ausgefallenes oder so … nur dies … wenn die Verbindung verloren geht und die Datei nicht gesendet wird, erscheint in meinem Protokoll die Meldung „Datei nicht gesendet, Verbindung nicht hergestellt“

Auch wenn die Dateien gesendet wurden, wird mir in den Protokollen angezeigt, dass sie erfolgreich gesendet wurden.

oder wenn der Host oder der Benutzer falsch ist, wird es in meinem Protokoll angezeigt.

Vielen Dank und Grüße, Sagar Mandal

Antwort1

Wenn Sie nur erfolglose Versuche protokollieren möchten, können Sie den Rückgabewert von rsync abrufen $?, indem Sie nachsehen. Dabei handelt es sich um den Rückgabewert des letzten Skripts. rsyncGibt bei Erfolg 0 und bei verschiedenen Fehlern einen Wert ungleich 0 zurück (https://lxadm.com/Rsync_exit_codes). Ich würde es folgendermaßen machen:

#!/bin/bash

ret_text=$({rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved} 2>&1)

if [ $? -ne 0 ]; then
    echo rsync error code $? on $(date)
    echo rsync output follows
    echo $ret_text
fi

Sie können das in ein Skript einfügen scriptund die Ausgabe beim Ausführen in eine Protokolldatei wie diese umleiten script >> log_file, oder Sie können einfach das Skript aufrufen und >> log_filenach jedem Echo-Befehl im Skript hinzufügen.

Wenn Sie auch erfolgreiche Versuche protokollieren möchten, dann

rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved &>> log_file

oder

rsync --log-file=log_file /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved

Ich würde außerdem vorschlagen, die von rsync erzeugte Informationsmenge durch Hinzufügen von -voder zu erhöhen -vv. Es ist auch möglich, oder sogar noch mehr zu verwenden -vvv, aber im Handbuch steht, dass dies zu Debugzwecken dient.

verwandte Informationen