K

- Base de connaissances

Accueil > Projets Open Source > MySQL > UDF MySQL lib_mysqludf_sys : sys_exec, sys_eval, sys_get, sys_set

UDF MySQL lib_mysqludf_sys : sys_exec, sys_eval, sys_get, sys_set

samedi 10 janvier 2015, par webmestre

Les UDF (User Define Functions) permettent de rajouter des fonctions disponibles dans les commandes mysql, et dans le cadre de cet article, nous souhaitons faire un appel système à partir d’une commande mysql.

Pour certaines raisons comme la sécurité, le core de mysql ne permet pas de faire une telle opération.

Mais, il existe des bibliothèques de plusieurs UDF sur www.mysqludf.org avec plus particulièrement la librairie SYS qui implèmente 4 fonctions permettant d’intérargir avec le système d’exploitation :

  • sys_get : Obtient la valeur d’une variable d’environnement spécifique
  • sys_set : Définit la valeur des variables d’environnement. Cette fonction accepte un couple nom / valeur qui est ensuite définie comme une variables d’environnement. * Utilisation sys_get pour récupérer la valeur d’une telle variable
  • sys_exec : exécute son argument commandstring et retourne son état de sortie. Attention, ce peut être un danger pour la sécurité.
  • sys_eval : exécute son argument commandstring et retourne sa sortie standard. Attention, ce peut être un danger pour la sécurité.
    PNG - 25.4 ko

Pour installer ces nouvelles commandes, il faut compiler la librairie après avoir récupéré le code source, d’où les commandes shell suivantes (sous utilisateur root) :

cd ~
apt-get install libmysqlclient-dev
wget https://github.com/zephilou/lib_mysqludf_sys/archive/master.zip
unzip master.zip
cd lib_mysqludf_sys-master/
./install.sh
/etc/init.d/mysql restart

Une fois l’installation de la librairie faite et le redémarrage du serveur MySQL fait, il suffit d’exécuter les requêtes appelant ces nouvelles commandes, comme par exemple :

select sys_exec('ls -al /home > /tmp/out.txt')

Répondre à cet article

Plan du site | Suivre la vie du site RSS 2.0 | powered by NYSTEK-EDITIONS and NYSTEK-CONSULTING