raccourci windows lancement ssh avec commande

Cette astuce permet depuis un raccourci windows d’exécuter une commande DOS qui lancera une connexion SSH avec des commande dedans. (c’est du lourd!)

Pré-requis

  • Pouvoir lancer une commande ssh dans l’invite de commande DOS
  • Pourvoir se connecter au serveur ssh avec un certificat (sinon la connexion automatique ne marchera pas (tuto à  venir si j’ai le temps)

Continuer la lecture de « raccourci windows lancement ssh avec commande »

Elastix(fop2) export sqlite3 vers mysql

Objectif :

Script qui permet d’exporter tous les contact de FOP2 (sqlite3) vers une table mysql « contact » identique.

Table mysql

– Créer une base de donnée && un utilisateur qui va bien

 

CREATE DATABASE `contact` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'contact'@'localhost' IDENTIFIED BY 'password';

GRANT USAGE ON `contact`.* TO 'contact'@'localhost' IDENTIFIED BY 'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `contact` . * TO 'contact'@'localhost';


– créer une table contact

CREATE TABLE contact (
id integer primary key auto_increment ,
 name varchar(35),
 last_name varchar(35),
 telefono varchar(12),
 extension varchar(7),
 email varchar(30),
 iduser int,
 picture varchar(50),
 address varchar(100),
 company varchar(30),
 notes varchar(200),
 status varchar(30)
 );


Script

Dans ledossier /var/www/replicationContact créer un fichier export.sh

Pour info j’ai du utiliser le mot de passe root car dans le script ce user ne fonctionnait pas….

#!/bin/sh
date=`date "+%F-%H%M%S"`
localDir=/var/www/replicationContact
dbDir=/var/www/db
dbLogin=contact
dbPswd='password'
#suppression du csv
rm $localDir/transfert.csv
#export sqlite3 en csv
sqlite3 /var/www/db/address_book.db <<!
 .mode csv
 .output /var/www/replicationContact/transfert.csv
 select * from contact;
 .exit
 !
#import du csv dans mysql
mysql --user=$dbLogin --password=$dbPswd --database=contact --execute="TRUNCATE TABLE contact.contact; LOAD DATA INFILE '/var/www/replicationContact/transfert.csv' INTO TABLE contact.contact FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n'";

Cron

Penser à  faire un cron qui excute export.sh tous les jours.

Vérifier les droits sur le dossier replicationContact et export:

 chmod 777 replicationContact
 chmod 644 export.sh
nano /etc/crontab
10 1 * * * root /bin/sh /var/www/replicationContact/export.sh

Astuce pour tester la mise en place on peut lancer le cron toutes les minutes :

*/1 * * * * root /bin/sh /var/www/replicationContact/export.sh

Mysql : convertir un select en csv

Actuce

Cette astuce permet de générer un fichier csv directement à  partir d’une requête mysql.

SELECT champ1, champ3, champ6, champ7 FROM matable INTO OUTFILE '/var/www/replication/transfert.csv' FIELDS ESCAPED BY '' TERMINATED BY ';';

Petit bémol les champs vide sont remplacé par NULL systématiquement.

Perso j’utilise généralement cette astuce dans des bash donc derrière je fais un rechercher/remplacer pour virer les NULL du type :

#conversion des champs NULL en espace
sed -i 's/NULL/ /g'  /var/www/replication/transfert.csv

Export mysql vers sqlite3 en shell

Ce tuto permet d’exporter certain champs d’une table mysql et de les importer dans une table sqlite3.

Prérequis :

  • Un dossier /var/www/replication/ qui contiendra nos scripts.
  • Un dossier /var/www/db/ qui contient les base de données sqlite dont address_book.db qui nous intéresse.
  • Une base de donnée mysql avec une table dont on veut exporter des champs

Le dossier replication contiendra 3 fichiers :

  • replication.sh : le bash que l’on exécutera
  • importer.sql : qui contient les actions sqlite3
  • transfert.csv : généré dynamiquement pour le transfert

replication.sh

#!/bin/sh
#definition des variables
date=`date "+%F-%H%M%S"`
localDir=/var/www/replication
dbDir=/var/www/db
dbLogin=monlogin
dbPswd=monpasswordmysql

#suppression du csv
rm $localDir/transfert.csv
#export mysql en csv
mysql --user=$dbLogin --pass=$dbPswd --database=nombase --execute="select champ1, champ3, champ6, champ7 from matable INTO OUTFILE '/var/www/replication/transfert.csv' FIELDS ESCAPED BY '' TERMINATED BY ';';"

#conversion des champs NULL en espace
sed -i 's/NULL/ /g' $localDir/transfert.csv

#import du csv dans sqlite3
sqlite3 $dbDir/address_book.db ".read "$localDir"/importer.sql"

exit 0

importer.sql

DELETE FROM contact;
.mod csv
.separator ;
.import /var/www/replication/transfert.csv contact

transfert.csv

Il contiendra des données au format csv.