#1 Le 07/02/2023, à 11:37
- Soledine22
gpg en errreur ne s'arrête pas
Bonjour,
un problème avec la commande gpg dans un fichier .sh, qui traite un lot de fichiers dans un répertoire.
La commande suivante ne s'arrête pas quand elle rencontre un cas d'erreur :
echo 'xxx' | gpg --batch -v --passphrase-fd -d ${file}
j'ai le log suivant, et gpg continue de tourner en boucle sans passer au fichier suivant dans le répertoire :
gpg: handle plaintext failed: Erreur générale
gpg: [don't know]: partial length for invalid packet type 14
j'ai essayé d'ajouter un exit 0 mais pas d'évolution :
echo 'xxx' | gpg --batch -v --passphrase-fd -d ${file} || exit 0
comment traité l'erreur pour passer au cas suivant, ou au pire sortir de l'exécution du script ?
merci
Hors ligne
#2 Le 07/02/2023, à 13:07
- matrix-bx
Re : gpg en errreur ne s'arrête pas
Salut,
pas rencontré de problème en essayant de reproduire mais n'étant pas dans le même cas d'erreur c'est pas forcément pertinent.
matrix-bx@laptop:~$ cat test1.sh
#!/usr/bin/env bash
for FILE in file1.gpg file2.gpg
do
echo $PASS | gpg --batch -v --passphrase-fd 0 -d $FILE >/dev/null 2>&1 && echo $? && echo success || echo failed
done
echo $?
matrix-bx@laptop:~$ cat test2.sh
#!/usr/bin/env bash
for FILE in file1.gpg file2.gpg
do
echo $PASS | gpg --batch -v --passphrase-fd 0 -d $FILE >/dev/null 2>&1 && echo $? && echo success || exit 1
done
echo $?
matrix-bx@laptop:~$
1er essais avec le bon password, les 2 scripts fournissent la même sortie.
matrix-bx@laptop:~$ ./test1.sh ; echo $?
0
success
0
success
0
0
matrix-bx@laptop:~$
matrix-bx@laptop:~$ ./test2.sh ; echo $?
0
success
0
success
0
0
matrix-bx@laptop:~$
2nd avec un mauvais password.
matrix-bx@laptop:~$ export PASS=toto
matrix-bx@laptop:~$ ./test1.sh ; echo $?
failed
failed
0
0
matrix-bx@laptop:~$
matrix-bx@laptop:~$ ./test2.sh ; echo $?
1
matrix-bx@laptop:~$
Le second script sort bien.
Résultat équivalent en le modifiant un peu.
matrix-bx@laptop:~$ cat test2.sh
#!/usr/bin/env bash
set -e
for FILE in file1.gpg file2.gpg
do
echo $PASS | gpg --batch -v --passphrase-fd 0 -d $FILE >/dev/null 2>&1 && echo $? && echo success
done
echo $?
matrix-bx@laptop:~$ ./test2.sh
2
matrix-bx@laptop:~$
J'ai du ajouter 0 après --passphrase-fd que tu n'avais pas mentionné (typo?).
Dernière modification par matrix-bx (Le 07/02/2023, à 13:10)
Utilisations des balises de mises en formes.
Hors ligne
#3 Le 07/02/2023, à 13:13
- Soledine22
Re : gpg en errreur ne s'arrête pas
Merci pour ta réponse.
Le 0 absent après passphrase-fd n'était pas une typo.
À quoi sert-il ?
Hors ligne
#4 Le 07/02/2023, à 14:05
- bruno
Re : gpg en errreur ne s'arrête pas
Bonjour,
Il sert a ce que la phrase de passe soit lue depuis l'entrée standard plutôt que depuis un fichier.
--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.