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 :

[bash] Requête SQL en SSH


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Par défaut [bash] Requête SQL en SSH
    Bonjour,
    Je cherche à faire un listing via une requête sql, le script est fonctionnel localement.
    Malheureusement par manque de connaissance, je n'arrive pas à le transposer en ssh, tout aide est la bienvenue ainsi que des conseils. Merci à vous



    Script local:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #!/bin/bash
    USERBD="bonjour"
    PASSBD="aurevoir"
    HOSTPATH="~/SCRIPTS/Fedora.txt"
    REMOTEUSER="x.x.x.x"
    REMOTEIP="x.x.x.x"
     
     
     echo -e "\n[Fedora-26]\n \n$(mysql -u $USERBD -p$PASSBD  -e "
    select glpi.glpi_computers.name
    from glpi.glpi_computers
    INNER JOIN glpi.glpi_operatingsystems
    on glpi.glpi_computers.operatingsystems_id = glpi.glpi_operatingsystems.id
    where glpi.glpi_computers.is_deleted=0 and glpi.glpi_operatingsystems.name='Fedora release 26 (Twenty Six)' and glpi.glpi_computers.name not like'FR%'
    order by glpi.glpi_computers.name;" | grep -ve "name")">>$HOSTPATH
    Tentative en ssh: infructueuse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ssh $REmoteusER@$REmoteIP '
    echo -e "\n[Fedora-26]\n \n$(mysql -u $USerBD -p$PAssBD  -e "
    select glpi.glpi_computers.name
    from glpi.glpi_computers
    INNER JOIN glpi.glpi_operatingsystems
    on glpi.glpi_computers.operatingsystems_id = glpi.glpi_operatingsystems.id
    where glpi.glpi_computers.is_deleted=0 and glpi.glpi_operatingsystems.name='Fedora release 26 (Twenty Six)' and glpi.glpi_computers.name not like'FR%'
    order by glpi.glpi_computers.name;" | grep -ve "name")">>$HostpaTH
    '

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ssh $REmoteusER@$REmoteIP <<eof
    printf '\n[Fedora-26]\n \n' >>"$HostpaTH"
    mysql -u $USerBD -p$PAssBD  -e "select glpi.glpi_computers.name
    from glpi.glpi_computers
    INNER JOIN glpi.glpi_operatingsystems
    on glpi.glpi_computers.operatingsystems_id = glpi.glpi_operatingsystems.id
    where glpi.glpi_computers.is_deleted=0 and glpi.glpi_operatingsystems.name='Fedora release 26 (Twenty Six)' and glpi.glpi_computers.name not like'FR%'
    order by glpi.glpi_computers.name;" | grep -ve "name">>$HostpaTH
    eof
    ?

    comment se fait-il que tu utilises un grep derrière ta requête ? mysql devrait te permettre de faire cette sélection supplémentaire, non ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Par défaut
    Bonjour,
    Merci beaucoup pour ton aide,
    L'utilisation du grep est sûrement du au manque de connaissance de ma part, l'idée était exporter le résultat dans mon fichier inventaire ANSIBLE. Sous MySQLworkbench, le résultat était propre mais sous cli, il y avait la valeur name qui apparaissait d'ou le grep -ve.
    En ce qui concerne pour le script, il est presque opérationnel, la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf '\n[Fedora-26]\n \n' >>"$HostpaTH"
    >>Pseudo-terminal will not be allocated because stdin is not a terminal. Je vais essayer de chercher par moi même mais merci de ton temps

    J'ai trouvé mon bonheur, voila et merci pour tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ssh -T  $REmoteusER@$REmoteIP <<eof
    echo -e '\n[Fedora-26]\n \n' >>$HostpaTH
    mysql -u $USerBD -p$PAssBD  -e "select glpi.glpi_computers.name
    from glpi.glpi_computers
    INNER JOIN glpi.glpi_operatingsystems
    on glpi.glpi_computers.operatingsystems_id = glpi.glpi_operatingsystems.id
    where glpi.glpi_computers.is_deleted=0 and glpi.glpi_operatingsystems.name='Fedora release 26 (Twenty Six)' and glpi.glpi_computers.name not like'FR%'
    order by glpi.glpi_computers.name;" | grep -ve "name">>$HostpaTH
    eof

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Pourquoi ne pas créer un script sur ton serveur et l'appeler via ssh plutot que de passer une commande géante(dure à échapper) ?
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Par défaut
    Pourquoi ne pas créer un script sur ton serveur et l'appeler via ssh plutot que de passer une commande géante(dure à échapper) ?
    Sûrement par masochisme. C'est juste que je veux éviter les dépendances ainsi la personne qui exécute le script après moi ne se posera pas la question si sur tel server, il y a bien l'existance de tel bout de script etc. Et puis je suis toujours en phase apprentissage donc j'essaye de bouger mon popotin.

  6. #6
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Tu peux faire un script sur ta machine qui pousse un script sur l'hôte puis l'exécute puis le supprime. Tu auras beau te tortiller, tu auras quand même des dépendances. La vraie question est de comment avoir conscience d'elles et comment les gérer.

    Si tu veux aller plus loin dans l'automatisation, ansible est intéressant. Il te permettrait de t'appuyer sur des méthodes éprouvées/maintenus/standards et de te construire au fur et à mesure des briques de maintenance réutilisable/paramétrables.

    Joli pseudo.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Par défaut
    Merci pour le conseil et le compliment .
    Et bien à vrais dire c'est pour automatiser le fichier inventaire de ANSIBLE
    Mon idée est de créer un listing des pc du parc informatique puis le caler sur notre fichier host.

  8. #8
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    http://docs.ansible.com/ansible/late...e_modules.html
    Bizarre qu'il n'y ait rien pour faire une bête requête. ça doit exister.

    Vous n'envisagez qu'un seul gros fichier d'inventaire ? ça serait pas plus agile avec plein de petits fichiers ?
    Comment est-ce que tu formates tes résultats de SELECT en inventaire (yaml ou autre) ?
    Est-ce que ça serait intéressant de faire une procédure stockée dans le mysql qui te retournerait directement un fichier d'inventaire tout bien formaté ? Faut bien la mettre quelque part l'intelligence du formatage.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Par défaut
    C'est la combinaison de plusieurs fonctions qui me guide à ce résultat, pour exemple la ligne de dessus me permet d'exporter le résultat de ma requête SQL dans un fichier.
    L'exclusion via et la commande ont pour objectif de formater le résultat afin de respecter la nomenclature d'un fichier ANSIBLE.


    [Nom-Groupe-machine]
    Ip 1
    FQDN

    [Nom-Groupe-machine2]
    Ip 3
    FQDN


    Sinon j'ai plusieurs fichiers inventaires mais à partir d'un certains nombres de postes, déploiement récurrents, critères spécifiques, je pense qu'il est indispensable d’améliorer le processus afin d'éviter les erreurs humaines .

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 15/10/2017, 13h35
  2. Insérer une variable Bash dans une requête sql
    Par Acidix dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 16/02/2015, 20h39
  3. Echappement *.* dans requête SQL en bash
    Par MAX3315 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 20/10/2014, 17h53
  4. requêtes SQL sur une serveur distant via SSH
    Par mamax29 dans le forum SGBD
    Réponses: 2
    Dernier message: 16/12/2011, 13h28
  5. récupérer résultat d'une requête SQL en bash
    Par Milo59000 dans le forum Linux
    Réponses: 10
    Dernier message: 08/09/2008, 10h13

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