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 :

Utilisation des paramètres d'un script centos7 dans MySQL


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Utilisation des paramètres d'un script centos7 dans MySQL
    Bonjour;
    Je veux écrire un script sous centos7 pour automatiser l'ajout des utilisateurs dans une table d'une base de donnée sous mysql , et je voudrais donner le nom d'utilisateur comme paramètre du script , mais je trouve pas la syntaxe pour le faire , j'ai trouvé que si je met mysql < fichier.mysql dans mon script ( ou fichier.mysql est un fichier qui contient les commandes mysql ) ca marche bien mais pour les passage des paramètres je ne sais pas comment faire.

    Merci.

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Et si tu faisais un fichier de commandes bash qui utilisent mysql pour chaque ligne ? Auquel cas, tu pourras paramétrer tes commandes.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Candidat au Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut réponse
    Désolée pour le retard , et merci pour ta réponse Flodelarab j'ai essayé ce que tu m'a suggéré mais voilà mon script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
    mysql  
    mysql USE vsftpd  # vsftpd c'est ma base de donnée que j'ai déjà créé
    mysql INSERT INTO utilisateur (nom,motDepasse) VALUES ('$1',(md5)'$1'); # utilisateurs c'est ma table que j'ai déjà créé aussi et $1 c'est le nom d'utilisateur à inserer qui'est un paramètre du de ce script 
    mysql quit
    mais lors de son exécution les commandes mysql ne sont pas reconnues voilà les messages d'erreurs

    Welcome to the MariaDB monitor. Commands end with ; or \g.
    Your MariaDB connection id is 5
    Server version: 5.5.56-MariaDB MariaDB Server

    Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    MariaDB [(none)]>
    tu vois il fait la connexion à la base puis il n'exécute pas les autres commandes

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    M'enfin...

    Appeler "mysql" sans argument ne te choque pas ?

    Tu es entré dans le mode interactif de mysql. (MariaDB pour être précis)
    Il attend des commandes.
    Donc forcément, ça ne marche pas.

    tu vois il fait la connexion à la bases
    Je ne vois rien du tout.
    [(none)] est probablement l'indication qu'il n'est sur aucune base de données, sinon, il mettrait son nom, j'imagine.

    puis il exécute pas les autres commandes
    Non plus. Tes commandes sont passées à la trappe.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Candidat au Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut reponse
    je sais que en tapant mysql il entre en mode interactif et c'est ça le problème je ne trouve pas la syntaxe pour utiliser mysql en mode commandes dans un script shell de centos7.

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut


    je ne trouve pas la syntaxe pour utiliser mysql en mode commandes
    Et si tu supprimais cette ligne idiote et sans paramètre qui n'a rien à faire dans ton script ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Candidat au Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    même si je la supprime ça donne rien
    regardes le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
     
    mysql vsftpd 
    mysql INSERT INTO utilisateurs (nom,motDepasse) VALUES ('$1',md5('$1')); 
    mysql quit
    et voila les messages qui montrent qu'il est toujours en mode interactif en utilisant ma base de donnée vsftpd cette fois-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
     
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 48
    Server version: 5.5.56-MariaDB MariaDB Server
     
    Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
     
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
     
    MariaDB [vsftpd]>
    ce que je te voudrais savoir c'est la syntaxe pour insérer un utilisateur dans ma table utilisateurs en mettant le code dans un script shell et en introduisant le nom de mon utilisateur comme paramètre de mon script exemple $1

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    pourquoi ne pas lire la documentation, le man notamment, de mysql ?
    tu y trouveras une option pour exécuter une commande.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut
    Depuis stackoverflow, non testé mais top vote donc probablement fonctionnel à adapter selon tes besoins

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #!/bin/bash
    inputfile="test.txt"
    cat $inputfile | while read ip mac server; do
        echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('$ip', '$mac', '$server');"
    done | mysql -uroot -ptest test;

  10. #10
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    « top vote » ?
    ce n'est pourtant pas ce qu'ils ont produit de mieux !

    et ça ne correspond pas à la demande : "utiliser un paramètre positionnel dans une commande mysql".
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut
    Je veux écrire un script sous centos7 pour automatiser l'ajout des utilisateurs dans une table d'une base de donnée sous mysql
    C'est exactement ce que fais le script ci-dessus mais avec des ip,mac,server

    Je ne dis pas que c'est la meilleur façon mais ca répond à sa question

  12. #12
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    Citation Envoyé par azad2017
    automatiser l'ajout des utilisateurs dans une table d'une base de donnée sous mysql
    ce n'est pas tout :
    Citation Envoyé par azad2017
    donner le nom d'utilisateur comme paramètre du script
    c'est justement ce que ne fait pas "ton" bout de code.

    donc, ça ne fait pas ce qui est demandé !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #13
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut
    Vous pouvez delete ce message pas envie de rentrer dans un débat sans fin

  14. #14
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    si tu ne sais pas ce qu'est un paramètre positionnel, en effet, on n'a pas fini.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #15
    Candidat au Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Quelqu'un m'a fourni la solution et je vais la partager avec vous, ta solution Lekno n'est pas très loin merci

    voici le script j'ai pris juste le nécessaire du script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
    # script pour ajout des utilisateurs a une table mysql
    ###################################################################
     
    echo -e "use $1;\n show databases;\n INSERT INTO utilisateurs (nom,motDepasse) VALUES ('$2',md5('$3')); "| mysql 
     
    ###################################################################
    Explications : le paramètre $1 c'est le nom de ma base de données , $2 c'est le nom de l'utilisateur que souhaite créer et en fin $3 c'est son mot de passe
    utilisateurs c'est le nom de ma table
    Merci pour tous ce qui ont participé à cette discussion !!

  16. #16
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    as-tu vraiment besoin de montrer les bases de données à chaque requête ?
    le nom de la base de données peut-être donné en argument à mysql.

    finalement, il ne reste que l'insertion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql -u "$user" -p "$pass" "$1" -e "INSERT INTO utilisateurs (nom,motDepasse) VALUES ('$2',md5('$3')); "
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  17. #17
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    si tu ne sais pas ce qu'est un paramètre positionnel, en effet, on n'a pas fini.
    Je propose une solution qui peut fonctionner, je précise que ce n'est certainement pas la best practice et ta réponse est remplis de mépris. As-tu un problème d'égo ? Y'a rien qui te choque dans ta façon de t'exprimer ? Ta remarque est de niveau lycée. Ce sera mon dernier message sur ce post je vais te laisser avoir le dernier mot je suis bien loin de ca sur un forum. Réfléchis juste à ta façon de t'exprimer si tu n'as pas de fierté mal placé, mais au vu de tes réponses j'en doute. Et pour ta gouverne on peut expliquer les choses sans faire d’excès de zèle.

    Bien cordialement

  18. #18
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    [HS]
    Vu de ma lointaine Bretagne, ce que j'observe, c'est que:
    • dans son premier post, Lekno a dit "probablement fonctionnel à adapter selon tes besoins"
      et je crois qu'il a raison: il faut l'adapter pour utiliser $1
    • ensuite, N_BaH a indiqué "ça ne correspond pas à la demande : "utiliser un paramètre positionnel dans une commande mysql""
      et je crois qu'il a raison: il faut l'adapter pour utiliser $1 (bis repetita placent)
    • ensuite, Lekno dit "ca répond à sa question"
      et je crois qu'il a raison... à condition de l'adapter pour utiliser $1 (ce qu'il a préconisé plus haut)
    • ensuite, N_BaH dit "ça ne fait pas ce qui est demandé"
      et je crois qu'il a raison... car il faut l'adapter pour utiliser $1
    • ensuite, Lekno dit "pas envie de rentrer dans un débat sans fin"
      et je crois qu'il a raison!
    • Ensuite, N_BaH dit "si tu ne sais pas ce qu'est un paramètre positionnel, en effet, on n'a pas fini."
      Là, pour une fois, je ne te suis pas, désolé. Rien ne permet de dire si, pour l'adaptation qu'il préconise, il a ou non la maîtrise des $1 et autres.
    • Ensuite Lekno dit "ta réponse est remplis de mépris."
      Là, pour une fois, je ne te suis pas, désolé. Rien en permet de dire si N_BaH ressent du mépris (ça pourrait être de la perplexité, par exemple). De plus sa phrase commence par "si". Il s'agit donc d'une supposition et non d'une affirmation...


    Bref, avant les derniers échanges, je crois que vous avez tous les deux raison, donc tout va pour le mieux!

    (et en plus, je suis d'accord avec vous (mais cela ne nous regarde pas))

    Conclusion: si on oublie les derniers échanges (qui me semblent plus liés à une forme d'incompréhension mutuelle), il n'y a plus de problème!
    [/HS]

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

Discussions similaires

  1. [AC-2013] Utilisation des paramètres dans une requete
    Par sami0701 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/12/2015, 21h44
  2. Problème dans l'utilisation des "paramètres" dans VS 2010
    Par SoAdAnTe dans le forum Visual Studio
    Réponses: 0
    Dernier message: 22/03/2010, 09h36
  3. Réponses: 0
    Dernier message: 15/01/2009, 16h09

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