IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Récupérer le résultat de grub-md5-crypt


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 172
    Par défaut Récupérer le résultat de grub-md5-crypt
    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.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bbkenny Voir le message
    Je souhaiterais récupérer le résultat fournit par la commande grub-md5-crypt.
    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]

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 172
    Par défaut
    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

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bbkenny Voir le message
    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]

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 172
    Par défaut
    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.

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,
    Citation Envoyé par bbkenny Voir le message
    i=$((i+=1)) : et pourtant cela donne le résultat voulu, une incrémentation de i à chaque passage.
    ici, l'incrémentation se fait par:
    Voici quelques exemples:
    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
    Le dernier exemple, pour montrer que ta syntaxe fonctionne mais elle est alambiquée dans ce cas précis.

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bbkenny Voir le message
    utilisé test $i -eq 0 ou $i = 0 : les deux syntaxes fonctionnent, après c'est une question de choix.
    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.

    Citation Envoyé par bbkenny Voir le message
    i=$((i+=1)) : et pourtant cela donne le résultat voulu
    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]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 30/06/2005, 10h06
  2. Réponses: 1
    Dernier message: 28/06/2005, 09h15
  3. récupérer le résultat d'une requete
    Par sheira dans le forum ASP
    Réponses: 3
    Dernier message: 03/12/2004, 11h04
  4. [C#] Récupérer le résultat d'une procédure stockée
    Par fabrice1596 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/10/2004, 13h45
  5. Réponses: 5
    Dernier message: 05/10/2004, 13h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo