Je veux obtenir les adresses IP de tous les appareils de destination où mon transfert de données à l'aide de rsync
n'a pas pu être terminé (ou même démarrer) car ces appareils ne sont pas connectés à Internet ou se sont déconnectés pendant le transfert de données ...
Mon scénario de problème réel est:
rsync -t Desktop/sony.pdf [email protected]: ssh: se connecter au port 22 de l'hôte a.b.c.d: pas de route vers l'hôte
et je veux la liste de toutes ces adresses IP où le transfert de données n'a pas pu être complété ...
la liste de toutes les adresses IP comme 'a.b.c.d'
Je fais le travail en Perl (en ligne de commande):
# Perl -ne '
($conn{$2}->{"ip"},$conn{$2}->{"started"})=($3,$1) if
/^(.{15}).*rsyncd\[(\d+)\]:\sconnect.*\((\d+\.\d+\.\d+\.\d+)\)/;
$conn{$2}->{"closed"}=$1 if /(.{15}).*rsyncd\[(\d+)\]:\ssent\s.*\stotal/;
END {
print "Good:\n";
map{
printf "%s %-16s %s\n",
$conn{$_}->{"started"},$conn{$_}->{"ip"},$conn{$_}->{"closed"} if
$conn{$_}->{"closed"};
} sort { $conn{$a}->{"started"} cmp $conn{$b}->{"started"}
} keys %conn;
print "Unterminated:\n";
map{
printf "%s %s\n",$conn{$_}->{"started"},$conn{$_}->{"ip"};
} sort { $conn{$a}->{"started"} cmp $conn{$b}->{"started"}
} grep { ! defined $conn{$_}->{"closed"}
} keys %conn;
}' < /var/log/daemon.log
Cela pourrait produire des résultats tels que:
Good:
Apr 28 08:12:01 127.0.0.1 Apr 28 08:15:35
Apr 28 08:27:01 192.168.1.36 Apr 28 08:28:04
Apr 28 08:42:01 127.0.0.1 Apr 28 08:42:13
Apr 28 08:57:01 192.168.1.36 Apr 28 08:57:16
Apr 28 09:12:01 127.0.0.1 Apr 28 09:12:28
Apr 28 09:27:01 192.168.1.36 Apr 28 09:27:13
Apr 28 09:42:01 127.0.0.1 Apr 28 09:42:09
Apr 28 09:57:02 192.168.1.36 Apr 28 09:57:16
Apr 28 10:12:01 127.0.0.1 Apr 28 10:12:32
Apr 28 10:27:01 192.168.1.36 Apr 28 10:27:12
Apr 28 10:42:01 127.0.0.1 Apr 28 10:42:14
Apr 28 10:57:01 192.168.1.36 Apr 28 10:57:13
Apr 28 11:27:01 192.168.1.36 Apr 28 11:28:01
Apr 28 11:42:01 127.0.0.1 Apr 28 11:44:32
Apr 28 11:57:02 192.168.1.36 Apr 28 11:58:43
Apr 28 12:12:01 127.0.0.1 Apr 28 12:12:27
Apr 28 12:27:01 192.168.1.36 Apr 28 12:28:48
Apr 28 12:42:01 127.0.0.1 Apr 28 12:42:13
Apr 28 12:57:01 192.168.1.36 Apr 28 12:57:56
Unterminated:
Apr 28 11:12:01 127.0.0.1
Vous pouvez dire où se trouve le fichier journal (selon la documentation de la page de manuel):
- log-file = FILE remplace le paramètre "log file"
Les informations des journaux sont normalement envoyées via le démon syslog, lorsque rsync s'exécute en mode démon.
Si vous voulez vous connecter quelque chose lors de l'utilisation de rsync sur ssh, vous devez mettre l'option en ligne de commande:
rsync --rsync-path='/usr/bin/rsync --log-file=$HOME/.rsyncd.log' -t Desktop/sony.pdf [email protected]:
pour enregistrer les journaux dans l'hôte de destination ou
rsync --log-file=$HOME/.rsyncd.log -t Desktop/sony.pdf [email protected]:
pour enregistrer les journaux dans l'hôte source.
Recherchez des preuves de rsync dans les journaux système. Par exemple:
Sudo grep -ir rsync /var/log
Pour cette question, vous pourriez grep/bien que ce soit exagéré.