À vrai dire, toutes les solutions présentées jusqu'à présent lisent 2 fois l'archive.
Et puis la lecture préliminaire du fichier contenant le hash permet éventuellement d'obtenir le chemin/nom du fichier à vérifier.
C'est plus générique.
# On récupère les paramètres
ARCHIVE="${1}"
SUMFILE="${2}"
# On lit le hash et le nom de fichier
MD5SUM=$(tar --extract --to-stdout --file ${ARCHIVE} ${SUMFILE})
MD5=$(expr "$MD5SUM" : "\([0-9a-fA-F]*\) .")
FNAME=$(expr "$MD5SUM" : "${MD5} .\(.*\)$")
# On vérifie
tar --extract --to-stdout --file ${ARCHIVE} "${FNAME}" | md5sum -c "${MD5} -" # Attention, 2 espaces entre MD5 et -
On lit toujours 2 fois l'archive mais c'est réutilisable.
Bien sûr, il est nécessaire que le chemin indiqué dans le md5 corresponde à celui de l'archive sinon on modifie le chemin à la volée...
[^] # Re: Il faut plusieurs lignes
Posté par Phil Actaire . En réponse au message tar et md5. Évalué à 2.
Et puis la lecture préliminaire du fichier contenant le hash permet éventuellement d'obtenir le chemin/nom du fichier à vérifier.
C'est plus générique.
# On récupère les paramètres
ARCHIVE="${1}"
SUMFILE="${2}"
# On lit le hash et le nom de fichier
MD5SUM=$(tar --extract --to-stdout --file ${ARCHIVE} ${SUMFILE})
MD5=$(expr "$MD5SUM" : "\([0-9a-fA-F]*\) .")
FNAME=$(expr "$MD5SUM" : "${MD5} .\(.*\)$")
# On vérifie
tar --extract --to-stdout --file ${ARCHIVE} "${FNAME}" | md5sum -c "${MD5} -" # Attention, 2 espaces entre MD5 et -
On lit toujours 2 fois l'archive mais c'est réutilisable.
Bien sûr, il est nécessaire que le chemin indiqué dans le md5 corresponde à celui de l'archive sinon on modifie le chemin à la volée...