Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

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

man gpg a écrit :

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