Je ne parviens pas à utiliser 'rhash' pour mettre à jour un fichier contenant des sommes de contrôle md5 sur le serveur Ubuntu 14.04.
Voici mon script:
#!/bin/bash
Sudo rhash -r -u --md5 /checksum/these/files --output=/checksum/these/files/checksum.md5
Le manuel rhash indique que "-u" ajoutera toutes les nouvelles sommes de contrôle à la fin du fichier, mais lorsque je lance mon script bash, le fichier de sortie devient complètement vide/aucun contenu (il supprime même les sommes de contrôle précédemment enregistrées de la liste).
Est-ce que je fais quelque chose de mal dans mon script? Ou est-ce que j'interprète mal l'option '-u'? Toute aide que vos génies peuvent me donner serait géniale =]
La rhash
manuel indique (emphase mienne):
-u, --update
Mettre à jour les fichiers de hachage spécifiés par la ligne de commande. Le programme calcule et ajoute des hachages au fichier de hachage mis à jour dans le format spécifié par les options de formatage. Les hachages sont calculés pour ces fichiers à partir du même répertoire que le fichier de hachage, qui ne s'y trouve pas encore.
La sortie est donc ajoutée à /checksum/these/files
et non à /checksum/these/files/checksum.md5
. Le fichier /checksum/these/files/checksum.md5
est créé par l'option --output
, mais comme vous utilisez -u
, ce qui signifie "mettre à jour le fichier d'origine", aucune sortie n'y est imprimée.
Par exemple:
$ date > file1
$ date > file2
$ md5sum * > hashes
$ cat hashes
909b1419ee961b556e0013929d8b667e file1
a6de9f219de32fec651e62e3c457169e file2
$ rhash -r -u --md5 hashes --output=new
Updated: hashes
$ cat hashes
909b1419ee961b556e0013929d8b667e file1
a6de9f219de32fec651e62e3c457169e file2
d41d8cd98f00b204e9800998ecf8427e new
$ cat new
$
Comme vous pouvez le voir ci-dessus, le fichier new
a été créé avant l'exécution du reste de la commande. Il a donc été inclus dans la vérification du hachage. Comme il n'y avait pas de hachage associé pour new
dans hashes
, une ligne a été ajoutée au fichier hashes
.
Sur une note plus générale, veuillez ne pas utiliser Sudo
s'il n'est pas nécessaire. Si vous avez vraiment besoin d'un accès root pour modifier /checksum/these/files
, supprimez le Sudo
du script et exécutez le script lui-même avec Sudo
: Sudo /path/to/script.sh
.