• [^] # Re: Il faut plusieurs lignes

    Posté par . En réponse au message tar et md5. Évalué à 2.

    À 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...