Bonjour,
Je souhaiterais récupérer le résultat fournit par la commande grub-md5-crypt.
Si quelqu'un peut m'aider, par avance merci.
Bonjour,
Je souhaiterais récupérer le résultat fournit par la commande grub-md5-crypt.
Si quelqu'un peut m'aider, par avance merci.
Bonjour
Si la commande n'affiche qu'une seule ligne: var=$(grub-md5-crypt).
Si la commande affiche plusieurs lignes
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 grub-md5-crypt |while read line; do traitement "$line" done
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Merci pour la réponse. Je souhaite récupérer la 3eme ligne, après avoir tapé deux fois le mot de passe. Donc mon code devient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 i=0 echo "Password:" grub-md5-crypt | while read line; do if [ $i = 0 ]; then echo "Retype password:" fi if [ $i = 2 ]; then echo " MD5 : $line" fi i=$((i+=1)) done
Bah je comprends que dalle à ton code. Il fait des echo, oui, mais n'utilise en fait rien qui vient de la commande elle-même (mis à part à la 3° ligne où tu affiches "MD5: <la_ligne_lue>"). Mais aucun des echo qu'il fait n'est traité par quoi que ce soit.
Et, entre nous, faire un "echo" de ce qu'affiche une commande n'apporte que peu d'intérêt. Autant exécuter directement la commande qui affichera alors elle-même ses infos à l'écran. Par exemple inutile de faire echo $(pwd). Autant appeler directement pwd.
Et si tu veux juste récupérer la 3° ligne d'une commande, te suffit alors de faire var=$(commande |head -3 |tail -1).
PS: t'as case...esac qui te permet d'évaluer plusieurs possibilités pour une variable plutôt que faire des if enchainés
PS2: la commande test demande -eq pour tester les numériques et non =...
PS3: i=$((i+=1)) a peu de chances de fonctionner (ce serait bien de réfléchir à ce que tu tapes au moment où tu le tapes quand-même !!!)
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Bonjour,
La fonction grub-md5-crypt, si tu la teste, te demande de saisir un mot de passe, puis de confirmer la saisie, pour afficher le mot de passe codé MD5.
Effectivement, la commande var=$(commande |head -3 |tail -1) va te retourner directement la troisième ligne, mais tu devras saisir les mot de passe en aveugle. D'ou les premiers echo.
echo " MD5 : $line" : il est vrai que cela semble avoir que peu d'intérêt, mais c'est juste pour tester le principe. Dans la réalité, je fais un traitement qui n'as pas d'intérêt dans le cadre de la question posée.
Oui, peut-être qu'un case est plus élégant qu'une succession de if.
utilisé test $i -eq 0 ou $i = 0 : les deux syntaxes fonctionnent, après c'est une question de choix.
i=$((i+=1)) : et pourtant cela donne le résultat voulu, une incrémentation de i à chaque passage.
Bonjour,
ici, l'incrémentation se fait par:
Voici quelques exemples:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ((i+=1))
Le dernier exemple, pour montrer que ta syntaxe fonctionne mais elle est alambiquée dans ce cas précis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $ a=1 $ echo $a 1 $ ((a+=1)) $ echo $a 2 $ $((a+=1)) bash: 3 : commande introuvable $ echo $a 3 $ b=1 $ b=$((a+=1)) $ echo $b 4
Il ne faut pas confondre "ce que l'on voit" et "ce qui se passe"... ou bien "ce qui se passe dans un cas précis" et "ce qui se passera dans d'autres cas non envisagés mais pouvant arriver". Or si les concepteurs de la commande test ont implémentés les deux opérateurs c'est que les deux sont utiles et ont des rôles distincts.
Le but de l'opérateur = est de comparer des chaines alphanumériques alors que l'opérateur -eq a pour but de comparer des nombres.
Ainsi test 05 = 5 te renverra "faux" alors que test 05 -eq 5 te renverra "vrai". C'est donc une question de robustesse de code et non de choix.
Ce n'est pas le résultat qui est contesté, c'est la façon de l'obtenir. Le += fait déjà l'affectation. Et le a=... fait aussi une affectation. Tu as donc deux affectations consécutives dans la même variable, c'est forcément une de trop. Après bien entendu c'est aussi une question de choix, entre celui qui aura un code qui met trois fois plus de temps que celui d'un autre...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Partager