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 confirmé 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
    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
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    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 828
    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
    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é 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
    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
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    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 828
    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 ..."
    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é 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
    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
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    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 828
    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
    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]

  7. #7
    Membre confirmé 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
    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
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    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 828
    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...
    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]

  9. #9
    Membre confirmé 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
    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
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    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 828
    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)
    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. [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