Bonsoir à tous. Voilà j’ai un léger souci. J’avais prévu de créer un script bash qui me générerait des mots de passe aléatoire d’une longueur définie à l’avance (ou changeable par l’utilisateur mais c’est pas la fonctionnalité que j’implémenterais en premier… :smt002 ).Donc ce script fonctionne bien, merci pour lui. Par contre, après la découverte récente du paquet libnotify et donc de la commande notify-send, je me suis dis que je pourrais afficher la clé générée grâce au script. Donc ça fonctionne… des fois. En effet, des fois il affiche la clé générée, des fois non… A y perdre son latin… Alors si quelqu’un a une idée… Testé sous Easy Peasy 1.5 (Ubuntu 9.04) et Debian Lenny. Merci d’avance
#!/bin/bash
rm ./clef
i=0
caractere=(a z e r t y u i o p "'" q s d f g h j k l m n b v c x w '<' '>' '&' é '"' '(' - è _ ç à ')' = + 0 9 8 7 6 5 4 3 2 1 '~' '#' '{' [ '|' '\' ^ @ ] '}' '`' $ £ ^ ¨ ù % µ '!' § ':' '/' ';' '.' , ? ¿ ¡ € ¥ N B V C X W Q S D F G H J K L M P O I U Y T R E Z A À Ä à â ä z ç Ç ý Ý û ü Û Ü þ Þ å Å î ï Ï Î ô ö Ö Ô ê ë Ë Ê ø Ø æ Æ Ð ð Ù ã Ã )
while [ "$i" -lt "63" ]
do
nombre=$RANDOM
let "nombre %= 127"
carac2[$i]=${caractere[$nombre]}
((i++))
done
i=0
while [ "$i" -lt "63" ]
do
echo -n ${carac2[$i]} >> ./clef #sauvegarde de la clef dans un fichier
((i++))
done
carac3=`less ./clef` #récupération de la clef sauvegardée dans le fichier
notify-send "Mot de passe généré" "${carac3[*]}"
PS: vous pardonnerez les commentaires qui peuvent paraitre évident, mais je suis pas vraiment expérimenté en matière de script bash ^^.
[quote=“Link78340”]carac3=`less ./clef` #récupération de la clef sauvegardée dans le fichier
notify-send "Mot de passe généré" "${carac3[*]}"
[/quote]
Moi j’aurais fais ça :
carac3=`cat ./clef` #récupération de la clef sauvegardée dans le fichier
notify-send "Mot de passe généré $carac3"
cat plutôt que less parce que cat n’interprète pas ce qu’il lit (et il est plus léger).
Ce que tu récupère avec cat c’est pas un tableau.
Pour ce qui est du caractère " je viens de tester avec dash :
$ var=\"
$ echo "salut c'est moi $var t'es ou ?"
salut c'est moi " t'es ou ?
Par contre il a pas aimé le :
$ echo "salut c'est moi ${var[1]} t'es ou ?"
sh: Bad substitution
Merci à tous les deux. Donc visiblement cela poourrait venir de la chaîne… Donc j’ai changé le less par un cat, et j’ai ensuite voulu changer le premier caractère de la chaîne, pour être sur qu’il ne s’agisse en aucun cas d’un caractère qui puisse être interprêté par bash.
Même résultat des fois il m’affiche mot de passe généré suivi de la clé, des fois par contre il n’affiche que la phrase mot de passe généré.
#!/bin/bash
rm ./clef
i=0
caractere=(a z e r t y u i o p "'" q s d f g h j k l m n b v c x w '<' '>' '&' é '(' - è _ ç à ')' = + 0 9 8 7 6 5 4 3 2 1 '~' '#' '{' [ '|' ^ @ ] '}' '`' $ £ ^ ¨ ù % µ '!' § ':' '/' ';' '.' , ? ¿ ¡ € ¥ N B V C X W Q S D F G H J K L M P O I U Y T R E Z A À Ä à â ä z ç Ç ý Ý û ü Û Ü þ Þ å Å î ï Ï Î ô ö Ö Ô ê ë Ë Ê ø Ø æ Æ Ð ð Ù ã Ã '"' '\')
alphabet=(p a o z i e u r y t q m l s k d j f h g w n b x v c )
while [ "$i" -lt "63" ]
do
nombre=$RANDOM
let "nombre %= 127"
if [ "$i" == "0" ]
then
let "nombre %= 26"
carac2[$i]=${alphabet[$nombre]}
else
carac2[$i]=${caractere[$nombre]}
fi
((i++))
done
i=0
while [ "$i" -lt "63" ]
do
echo -n ${carac2[$i]} >> ./clef #sauvegarde de la clef dans un fichier
((i++))
done
carac3=`cat ./clef` #récupération de la clef sauvegardée dans le fichier
notify-send "Mot de passe généré" "$carac3"
J’ai essayé, donc ça change pas grand chose, des fois il affiche rien, des fois il affiche le mot de passe généré et la clé vu que tout est dans la même chaîne de caractères… De plus en adoptant cette syntaxe tout est dans le titre et il me semble qu’avec notify, le nombre de caractères est réduit.
Oui détend toi, il faut valider les choses étapes après étapes.
Le bug que tu montre ne dis pas clairement dans quel condition il se produit.
Ne serais-ce que si on veut pouvoir aider à la résolution, il faut voir les choses étape après étape. Et valider tout ce qui est sûr.
[quote=“L0u!$”]moi j’ai testé son code avec echo … qui marche à tous les coups.
pour être sûr, j’ai fait un echo après le notify-send
donc pour un echo qui marche à tous les coups, le notify ne suit pas à tous les coups.[/quote]
Maintenant on peut mettre en cause notify-send soit à cause de sa syntaxe soit à cause d’un bug.
@ignatioza > ce n’est pas parce que notify-send fonctionne mal qu’il ne faut pas remettre en cause le reste du code.
Salut à tous et merci de vous pencher sur le sujet. Donc à la base il s’agit d’un générateur de clé type wpa donc 63 caractères. Auparavant, je faisais un echo afin d’afficher la clé en ligne de commande. J’ai ensuite voulu le remplacer par notify-send. Donc soit il a du mal quand la chaîne contient des caractères qu’il considère comme ésotériques, soit notify-send a du mal, soit ma chaîne ou mes tableaux sont mal créés/ initialisés, que sais-je…
Merci à tous, le script fonctionne à présent convenablement, la dernière solution avec libnotify a sensiblement amélioré les choses, le ratio est bien plus intéréssant, il a tendance a planter que si je lance une dizaine de fois consécutivement le script, alors qu’avant c’était limite une fois sur 2. Pour ce qui est de de zenity, j’ai lu un peu de doc dessus, et c’est vraiment très intéréssant, je pense que ya moyen d’améliorer encore mon script avec celui-ci, quand j’aurai bien compris comment ça fonctionne. Encore merci à tous je pense que je peux le passer en résolu