Doctrine ne permet pas à l’heure actuelle de se connecter à un serveur Microsoft SQL server. Voici une astuce pour le faire. Continuer la lecture de « Symfony2 ou Silex + Doctrine + Linux connection MSSQL »
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 »
Installation d’un serveur ubuntu lamp
Installer ubuntu normalement (ne pas faireles pré-installations proposé (ex : lamp))
Activer le compte root
sudo passwd root
Installer ssh
apt-get install ssh
Mettre une IP statique
nano /etc/network/interfaces
Modifier comme suit :
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.62
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
redémarrer le service réseau :
/etc/init.d/networking restart
Installer le LAMP
apt-get install apache2 php5 mysql-server libapache2-mod-php5 php5-mysql php5-sqlite phpmyadmin
Créer un utilisateur php (ex : phpuser)
Personnellement je me crée un utilisateur phpuser qui appartient au groupe www-data et qui à le droit de se connecter en ssh.
Ensuite pour développer je me connecte avec ce compte il suffit que dans le www
– les dossiers soient en chmod 775 au lieu de 755
– les fichiers soient en chmod 664 au lieu de 644
on résout ainsi les problèmes de droit d’exécution des fichiers tout en maintenant la sécurité
PROCEDURE :
#créer le user :
useradd phpuser
#Ajouter le user dans le groupe www-data :
usermod -a -G www-data phpuser
#Pour vérifier les groupes du user :
groups phpuser
#forcer le user phpuser à écrire en 775/664 plutôt que 755/644
umask 002 >> /home/phpuser/.profile
#forcer le user www-data à écrire en 775/664 plutôt que 755/644
umask 002 >> /etc/apache2/envvars
#on se déplace vers /var
cd /var/
#on change le groupe du www
chown www-data:www-data www
chown -R www-data:www-data www/*
#On positionne le GID bit : les fichiers et dossiers créés appartiendront au groupe www-data
chmod g+s www
on met à jour les droits sur les fichiers & dossier existant s’il y en a
chmod -R g+w www/*
find www -type d -exec chmod g+s {} \;
OPTIONNEL : ajout du de votre certificat ssl pour le user
mkdir /home/phpuser/.ssh
nano /home/phpuser/.ssh/authorized_keys
#copier la clé publique
chown -R phpuser:phpuser /home/phpuser/.ssh/ /home/phpuser/.ssh/*
chmod 700 /home/phpuser/.ssh/
SHELL : chmod/chown recursif que sur dossier ou fichier
Il peut arriver, moi assez souvent en fait, de vouloir changer les droits et propriétaires sur une arborescence de dossier/fichier.
Le problème c’est que l’on souhaite généralement un type de droit (ex:755) pour le dossier et un type de droit pour les fichiers (644).
Ci-dessous une astuce qui peut remédier ce problème. Elle peut d’ailleurs être utiliser pour bien des problèmes grà¢ce à la puissance de la fonction find.
Pour les dossiers :
find . -type d -exec chmod 775 {} \;
Pour les fichiers :
find . -type f -exec chmod 644 {} \;
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
shell : déplacer le contenu de plusieurs dossiers dans un seul
petite de commande pour déplacer le contenu de plusieurs dossier dans un seul et unique :
find ./*/* -type f -exec mv {} ./monuniquedossier/ \;
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.
Crontab quelques astuces
Quelque astuces :
Réfs : http://doc.ubuntu-fr.org/cron
Format d’un cron
* * * * * [user] [type d’exécution] [fichier || commande]
Il y a cinq champs, séparés par un espace ou une tabulation, dont chacun est paramétré soit par, un nombre, une étoile (*), ou le texte approprié. Les champs sont, dans l’ordre, minute, heure, jour du mois, mois et jour de la semaine. Le mois et le jour de la semaine permettent l’utilisation d’une abréviation (suivant les jours et mois en anglais), telle que jan pour janvier (January) ou thu pour jeudi (Thursday).
Syntaxe pour exécuter une commande toutes les 5 mins
*/5 * * * * root /bin/sh /var/www/replication/replication.sh
Syntaxe pour exécuter une commande toutes les jours à 21h30
30 21 * * * root /bin/sh /var/www/replication/replication.sh
Syntaxe pour exécuter un fichier .sh
* * * * * root /bin/sh /var/www/replication/replication.sh
Attention dans votre script.sh si vous appelez des fichiers à bien les appeler avec leur url absolue !
Script bash pour connaitre IP public serveur
Créer un fichier ex testip.sh
Copier le code ci-dessous:
#!/bin/bash
wget http://www.monip.org/ 2> /dev/null
echo " Adresse ip public est :"
perl -ne 'print "$1\n" if m/((\d{1,3}\.){3}\d{1,3})/' < index.html
rm index.html
Shell : script de sauvegarde de dossier
Script qui génère un tar.gz du named.conf et du dossier zones tous les jours à 3h du matin et supprime les sauvegardes de plus de 2 mois.
Créer le fichier backup_01.sh
nano /var/www/test/backup01/backup_01.sh
- copier dedans le code ci-dessous :
#!/bin/sh
#definition des variables
dir=/var/www/test/dir01
bkdir=/var/www/test/backup01
date=`date "+%F-%H%M%S"`
#suppression des sauvegardes de plus de 2 mois
find . -maxdepth 1 -type f -user root -ctime +59 -name "bkp01_*.tar.gz" -exec rm {} \;
#generation de la sauvegarde journaliere
tar -zcvf $bkdir/bkp01_ns01_$date.tar.gz $dir/
Editer le fichier /etc/crontab
nano /etc/crontab
- ajouter la ligne ci-dessous :
0 3 * * * root /bin/sh /var/www/test/backup01/backup_01.sh
- Le script s’exécutera tous les jours à 3h du matin avec le compte root