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

Linux Discussion :

Injection de donnée MySQL via script bash


Sujet :

Linux

  1. #1
    Membre régulier Avatar de loopback
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 170
    Points : 113
    Points
    113
    Par défaut Injection de donnée MySQL via script bash
    Bonjour,
    Après avoir créer un utilisateur système via un script bash, je souhaiterais injecter des données relatives à son compte FTP dans une base mysql mais je ne sais pas quel commande il faut utiliser pour ça.

    Voici la ligne que je dois injecter à mysql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`, `ULRatio`, `DLRatio`) VALUES ('toto', '1', MD5('motdepasse'), '1003', '1003', '/var/www/vhosts/toto', '100', '100', '', '*', '50', '0', '0', '0');
    Pour se connecter à la base je peu faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/bin/mysql -A -uTOTO -hlocalhost -pPASSWORD -Ddatabase < /path/to/donnee_a_injecter
    Bref, quelle est la meilleure méthode ?
    Faut -il appeler un autre script pour ça ?
    Merci

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    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 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par loopback Voir le message
    Bonjour,
    Après avoir créer un utilisateur système via un script bash, je souhaiterais injecter des données relatives à son compte FTP dans une base mysql mais je ne sais pas quel commande il faut utiliser pour ça.

    Voici la ligne que je dois injecter à mysql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`, `ULRatio`, `DLRatio`) VALUES ('toto', '1', MD5('motdepasse'), '1003', '1003', '/var/www/vhosts/toto', '100', '100', '', '*', '50', '0', '0', '0');
    Pour se connecter à la base je peu faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/bin/mysql -A -uTOTO -hlocalhost -pPASSWORD -Ddatabase < /path/to/donnee_a_injecter
    Bref, quelle est la meilleure méthode ?
    Faut -il appeler un autre script pour ça ?
    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "insert into machin (truc, chose) values ('bidibidi", 'badaba')" |mysql -Ddatabase

  3. #3
    Membre régulier Avatar de loopback
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    merci pour l'aide,
    mais en fait il ne reconnait pas la commande mysql car le serveur mysql se trouve sur une autre machine du réseau.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    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 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par loopback Voir le message
    merci pour l'aide,
    mais en fait il ne reconnait pas la commande mysql car le serveur mysql se trouve sur une autre machine du réseau.
    On se fout de l'endroit où se trouve le serveur mysql puisque tu utilises le client mysql (qui doit normallement se trouver sur ton host) et qu'un client sur un host x peut très bien taper sur un host y avec l'option -h (d'ailleurs dans ton exemple, tu tape -hlocalhost ce qui montre bien que ton serveur est local)

    Sinon il te suffit d'envoyer le "echo" par rsh sur le host où se trouve ta commande mysql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsh host "echo \"..........\"`|mysql ..."

  5. #5
    Membre régulier Avatar de loopback
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    Salut,
    désolé de mon ignorance mais en tappant ta commande il me met le prompt:
    >

    Je n'ai pas encore saisi.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    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 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par loopback Voir le message
    Salut,
    désolé de mon ignorance mais en tappant ta commande il me met le prompt:
    >

    Je n'ai pas encore saisi.
    Il s'agit du prompt secondaire qui montre que la commande n'est pas terminée
    Cela peut provenir de plusieurs choses
    1) la commande prend plusieurs lignes comme un "if...fi" ou "while do...done"
    2) la commande est mal tapée (tu ouvres un guillemet sans le fermer)

    Suis pas certain de la syntaxe exacte (quottes, backquottes) donc essaye ça (copier/coller)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "INSERT INTO 'ftpd' ('User', 'status', 'Password', 'Uid', 'Gid', 'Dir', 'ULBandwidth', 'DLBandwidth', 'comment', 'ipaccess', 'QuotaSize', 'QuotaFiles', 'ULRatio', 'DLRatio') VALUES ('toto', '1', MD5('motdepasse'), '1003', '1003', '/var/www/vhosts/toto', '100', '100', '', '*', '50', '0', '0', '0');" |/usr/bin/mysql -A -uTOTO -hlocalhost -pPASSWORD -Ddatabase
    Si ça marche pas, alors essaye ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "INSERT INTO ftpd (User, status, Password, Uid, Gid, Dir, ULBandwidth, DLBandwidth, comment, ipaccess, QuotaSize, QuotaFiles, ULRatio, DLRatio) VALUES ('toto', '1', MD5('motdepasse'), '1003', '1003', '/var/www/vhosts/toto', '100', '100', '', '*', '50', '0', '0', '0');" |/usr/bin/mysql -A -uTOTO -hlocalhost -pPASSWORD -Ddatabase

  7. #7
    Membre régulier Avatar de loopback
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    Voici ce que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "INSERT INTO ftpd (User, status, Password, Uid, Gid, Dir, ULBandwidth, DLBandwidth, comment, ipaccess, QuotaSize, QuotaFiles, ULRatio, DLRatio) VALUES ('toto', '1', MD5('motdepasse'), '1003', '1003', '/var/www/vhosts/toto', '100', '100', '', '*', '50', '0', '0', '0');" |/usr/bin/mysql -A -utoto -h192.168.0.xxx -pPASSWORD -Dmabd
    Voici ce qu'il me répond dans les deux cas et meme avec rsh:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -bash: /usr/bin/mysql: Aucun fichier ou répertoire de ce type


    J'ai bien le client mysql mais là il cgherche le binaire mysql du serveur non ?

    Et en créant un script php qui me connect à la base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/php
    #
    <?php
    mon_code
    ?>
    Ce script serait appelé par le script bash. ??

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    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 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par loopback Voir le message
    J'ai bien le client mysql mais là il cherche le binaire mysql du serveur non ?
    Hum... ça m'a l'air cafouilleux dans ta tête (et aussi sur ta machine)...
    Le serveur mysql c'est le logiciel qui gère ta bdd. Il est situé sur un host mais comme il est réseau tu peux l'attaquer depuis un autre host via la commande "mysql -h<host_qui_contient_le_serveur>" pourvu que là où tu tapes cette commande tu aies présent le client mysql

    Citation Envoyé par loopback Voir le message
    Et en créant un script php qui me connect à la base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/php
    #
    <?php
    mon_code
    ?>
    Ce script serait appelé par le script bash. ??
    Non. Un script php n'est pas appelé depuis un bash mais depuis le serveur Apache qui gère ton site web (le serveur Apache n'est pas forcément situé sur le même host que le serveur MySQL). Donc du point de vue MySQL, Apache n'est qu'un client MySQL comme un autre.
    De plus tu peux très bien avoir Apache qui a à sa disposition le client php/mysql (donc php peut uiliser des commandes mysql) sans que t'aies le client mysql pour bash (la commande mysql)...

    Avant d'aller plus avant, faut que tu puisses taper "mysql" depuis un shell sans que ça te dises "mysql not found" parce que ton topic s'intitule "Injection de donnée MySQL via script bash" donc faut que t'aies déjà à ta disposition le client bash/mysql...

  9. #9
    Membre régulier Avatar de loopback
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    Merci pour tes explications, je comprend mieux le rôle de mysql-client, j'ai vérifier avec dpkg -l | grep mysql-client et il n'était pas installé.

    Je l'ai donc installé.
    J'ai retenté avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "INSERT INTO ftpd (User, status, Password, Uid, Gid, Dir, ULBandwidth, DLBandwidth, comment, ipaccess, QuotaSize, QuotaFiles, ULRatio, DLRatio) VALUES ('toto', '1', MD5('motdepasse'), '1003', '1003', '/var/www/vhosts/toto', '100', '100', '', '*', '50', '0', '0', '0');" |/usr/bin/mysql -A -uTOTO -hlocalhost -pPASSWORD -Ddatabase
    Et résultat....ça marche

    Merci pour ta patience et tes explications.

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    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 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par loopback Voir le message
    Merci pour tes explications, je comprend mieux le rôle de mysql-client, j'ai vérifier avec dpkg -l | grep mysql-client et il n'était pas installé.

    Je l'ai donc installé.
    J'ai retenté avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "INSERT INTO ftpd (User, status, Password, Uid, Gid, Dir, ULBandwidth, DLBandwidth, comment, ipaccess, QuotaSize, QuotaFiles, ULRatio, DLRatio) VALUES ('toto', '1', MD5('motdepasse'), '1003', '1003', '/var/www/vhosts/toto', '100', '100', '', '*', '50', '0', '0', '0');" |/usr/bin/mysql -A -uTOTO -hlocalhost -pPASSWORD -Ddatabase
    Et résultat....ça marche

    Merci pour ta patience et tes explications.
    Ok. Tu peux enlever l'option "-h" car localhost est pris par défaut (sauf si tu veux ensuite le mettre dans un script qui choisi son serveur de façon transparente)

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

Discussions similaires

  1. [VB6][MYSQL] recuperer des données MySQL via PHP
    Par psykotox dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 18/01/2008, 11h25
  2. [MySQL] Recherche BDD MySQL via script PHP
    Par poitierjohan dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/10/2007, 12h12
  3. recuperer des données MySQL via PHP en VB6
    Par pobrouwers dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/04/2007, 12h33
  4. Connexion à une base de données mysql via access
    Par eautret dans le forum Access
    Réponses: 2
    Dernier message: 07/04/2006, 10h02
  5. gérer une base de donnée MySql via C++
    Par thiane dans le forum Bibliothèques
    Réponses: 9
    Dernier message: 19/05/2005, 16h19

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