J'ai plusieurs centaines de fichiers cryptés gpg dans un répertoire, au format filename.xyz.gpg où "xyz" est une extension quelconque. Je dois déchiffrer tous les fichiers pour générer nomfichier.xyz déchiffré de manière à ne pas avoir à saisir manuellement le mot de passe pour chaque fichier.
J'ai essayé ce qui suit pour le répertoire "Testing":
for file in 'ls Testing'; do (echo <password>|gpg --passphrase-fd 0 -d $file
--output $file.decrypted);
Je viens de terminer avec une invite de commande>, et rien ne se passe.
Quel est le problème avec ma syntaxe? Existe-t-il un moyen plus efficace de procéder sans une boucle Shell bash?
Comme il est dit dans le manuel, vous devez ajouter l'option --batch
:
--passphrase-fd n
Read the passphrase from file descriptor n. Only the first line will be read from file descriptor n. If you use 0 for n, the passphrase will be read from
STDIN. This can only be used if only one passphrase is supplied. Note that this passphrase is only used if the option --batch has also been given. This is
different from gpg.
--passphrase string
Use string as the passphrase. This can only be used if only one passphrase is supplied. Obviously, this is of very questionable security on a multi-user sys‐
tem. Don't use this option if you can avoid it. Note that this passphrase is only used if the option --batch has also been given. This is different from
gpg.
Vous pouvez avoir l’une de ces deux formes:
echo "passphrase" | gpg --passphrase-fd 0 --batch -d --output "decrypted.file" "file.gpg"
Ou plus simple:
gpg --passphrase "passphrase" --batch -d --output "decrypted.file" "file.gpg"
Vous pouvez essayer un script comme celui-ci pour extraire vos fichiers:
#!/bin/bash
read -rsp "Enter passphrase: " PASSPHRASE
for FILE in *.*.gpg; do
echo "Extracting $FILE to ${FILE%.gpg}."
echo "$PASSPHRASE" | gpg --passphrase-fd 0 --batch -d --output "${FILE%.gpg}" "$FILE"
done
gpg
peut décrypter plusieurs fichiers, vous n'avez donc pas besoin d'écrire une boucle.
Essayez ce qui suit. Vous devrez entrer votre mot de passe une fois.
gpg --passphrase-fd 0 --decrypt-files *.gpg
J'ai eu du succès avec gpg --decrypt-files * Mais pas * .gpg