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. rsync
Gibt 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 script
und die Ausgabe beim Ausführen in eine Protokolldatei wie diese umleiten script >> log_file
, oder Sie können einfach das Skript aufrufen und >> log_file
nach 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 -v
oder 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.