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

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