Get Adobe Flash player

Mes développements

# /etc/init.d/mysql stop

- Lauch mysql with --skip-grant-tables (WARNING: your mysql server will launch without any password authentication, so please protect it first with a firewall or something if it's world accessible)
# mysqld_safe --skip-grant-tables

- Login as root without a password
$ mysql -u root

- Change the password
mysql> use mysql;
mysql> update user set password=PASSWORD("your_new_root_password") where User='root';
mysql> flush privileges;
mysql> quit

- Stop mysql
# /etc/init.d/mysql stop

- Start mysql again to re-enable authentication
# /etc/init.d/mysql start
Pré requis : ssh soit fonctionner normalement avec PuTTY

Exécuter vncserver sur le serveur si celui-ci n'est pas déjà lancé.

Dans PuTTY => Connection => SSH => Tunnels

Add new forwarded port :
Source port : 5901
Destination : 127.0.0.1:5901
==> Add

Executer vncviewer sur 127.0.0.1::5901
Faire un backup du serveur maître sur l'esclave.

Sur le maitre :
 GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY '<password>';

Dans my.ini : (section mysqld)
 log-bin
 server-id=1


Sur l'esclave :
Dans my.ini : (section mysqld)

 server-id=2
 # nom d'hote du maitre
 master-host=serveur_maitre
 # port sur lequel écoute le serveur maitre
 master-port=3306
 # nom utilisé pour se connecter au maitre
 master-user=repl
 # mot de passe pour se connecter au maître
 master-password=<password>

Dans un client mysql :

 SLAVE START ;
/* À copier dans userChrome.css */
/* === Barre de menu === */
/* Règle la hauteur de la barre */
#toolbar-menubar {
    height: 33px !important;
}
/* Boutons suivant et précédent */
#back-button[disabled=« true »],
#forward-button[disabled=« true »] {
    display: none;
}
/* Fais disparaitre le menu « Historique » et le menu « Aide » */
#navigator-toolbox menu[label=« Historique »],
#navigator-toolbox menu[label=« Aide »] {
    display: none !important;
}
/* === Barre de menu === */
/* Par exemple, vous ne verrez plus « précédente » dans le menu contextuel
s’il n’y a pas de page précédente dans l’onglet*/
menuitem[disabled=« true »] {
   display: none;
}
/*  Si vous ne voulez AUCUN dropmarker */
.tabbrowser-arrowscrollbox + stack,
.toolbarbutton-menubutton-dropmarker {
    display: none !important;

}

Petit hack sur VMWare Workstation 8.0 pour utiliser le « | » :

Sous linux :

– Fermer toutes les VM et VMWare Workstation
– echo « xkeymap.usekeycodeMap = true » > /etc/vmware/config
– service vmware restart

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1022454

Ci-dessous un script de monitoring FTP permettant de pouvoir superviser n’importe quel serveur FTP .  Celui-ci ce veux autonome en cas d’un échec détecté, permettant de pouvoir exécuter des commandes PHP CLI avec exec() par exemple .

Celui-ci nécessite :

– Création d’un dossier :

mkdir -p /home/automate/ftpmonit/alerte
chmod o+x /home/automate/ftpmonit/alerte

– Création d’un fichier  connect.txt dans /home/automate/ftpmonit du format suivant :

<SERVEUR>|<UTILISATEUR>|<PASSWORD>

– Copie du code suivant dans le fichier : /home/automate/ftpmonit/monit.php

– Création d’un cron pour qui soit répétitif ( http://fr.wikipedia.org/wiki/Crontab )

 

<?php
function restore($user,$server){


$file = "/home/automate/ftpmonit/alerte/$user.$server.txt";
$num = file_get_contents($file);
$numc = trim($num)+1;
file_put_contents($file,$numc);

if ($numc > 2 ){

if ($numc < 4 ){
        echo "Trop de tentative : echec des relances\n";
        $daten = date("d/m/Y H:i:s");
        $message = "Panne du serveur : $user@$server a $daten \n ECHEC DES 3 TENTATIVES :  \n\n Status : en attente d'une OPERATION MANUELLE";

                mail("< VOTRE EMAIL >","[URGENT ALERTE FTP : $user]",$message,"From:< VOTRE EMAIL >");

}else{
        echo "Trop de tentative - Message deja effectif\n";
}

}else{

    < VOS EXÉCUTIONS >

}



}

function alerte($user,$server){

$file = "/home/automate/ftpmonit/alerte/$user.$server.txt";

        if (! file_exists($file)){
                file_put_contents($file,"ALERTE");
                $daten = date("d/m/Y H:i:s");
                $message = "Panne du serveur : $user@$server a $daten \n\n Status : en attente d'un RECOVERY";

                mail("< VOTRE EMAIL >","[ALERTE FTP : $user]",$message,"From:< VOTRE EMAIL >");

                restore($user,$server);
        }else{

                echo "\nFile Lock d<E9>ja present pour $user \n";

                restore($user,$server);

        }


}

function recovery($user,$server){

$file = "/home/automate/ftpmonit/alerte/$user.$server.txt";

        if (file_exists($file)){

                unlink($file);
                $daten = date("d/m/Y H:i:s");
                $message = "Restauration du serveur : $user@$server a $daten";
                mail("< VOTRE EMAIL >","[RECOVERY FTP : $user]",$message,"From:< VOTRE EMAIL >");


        }


}

// Mise en place d'une connexion basique

$lines = file('/home/automate/ftpmonit/connect.txt');
/*On parcourt le tableau $lines et on affiche le contenu de chaque ligne pr<E9>c<E9>d<E9>e de son num<E9>ro*/
foreach ($lines as $lineContent)
{

list($ftpd,$user,$passwd)=explode("|",$lineContent);

$ftp_server = $ftpd;
$ftp_user = $user;
$ftp_pass = $passwd;

echo "CONNEXION : $ftpd - AVEC $user \n";


if (@ftp_connect(trim($ftpd))){

$conn_id = @ftp_connect(trim($ftpd)) or die("Couldn't connect to $ftp_server");

}else{
echo "\nEchec de connexion $ftpd\n";
$no = 1;
alerte($ftpd,$user);


}

if ($no != 1){
// Tentative d'identification
if (@ftp_login($conn_id, trim($ftp_user), trim($passwd))) {

echo "OK";

$file = "/home/automate/ftpmonit/alerte/$ftp_user.$ftp_server.txt";

   if (file_exists($file)){
                echo " Recovery : $ftp_user@$ftp_server\n";
                recovery($user,$ftpd);
        }else{

                 echo " Connect $ftp_user@$ftp_server\n";

        }

} else {
    echo "NOK $ftp_user\n";
    alerte($user,$ftpd);

}

}

// Fermeture de la connexion
@ftp_close($conn_id);


unset($ftpd);
unset($user);
unset($passwd);
unset($no);

sleep("10");

echo "\n\n=========================================\n\n";

}


?>






 

Le script suivant permet de surveiller le contenu d’un site par un mot clé insérer dans la source du site . Le script suivant utilise CURL (apt-get install curl) pour effectuer des requêtes HTTP permettant de récupérer la source du site dans une liste et vérifier que le mot clé existe bien .

Le script est très utile si celui-ci est hacké ou si celui-ci ne répond plus

 

 

Etape 1 : Préparation de l’environnement 

mkdir /home/automates
cd /home/automates && mkdir alert index param

Etape 2 : Mise en place du script bash 

vim monitsite.sh

Copier coller le script suivant :

#!/bin/sh
BASEDIR="/home/automates"
FILE="$BASEDIR/liste.txt"
GETPARAM="$BASEDIR/param"
GETAL="$BASEDIR/alert"
MAILD="VOTRE EMAIL"
while read ligne
do
SITE=$(echo $ligne|awk -F"|" '{print($1)}')
KEY=$(echo $ligne|awk -F"|" '{print($2)}')
PRM=$(echo $ligne|awk -F"|" '{print($3)}')
echo "=== SITE $SITE ==="


if test -z $PRM; then
 DATA=$(curl -s http://$SITE)
else
if test -e $GETPARAM/$SITE.txt; then
 MPARAM=$(less $GETPARAM/$SITE.txt)
 echo "curl --request $PRM 'http://$SITE' --data '$MPARAM'"
 DATA=$(curl --request $PRM 'http://$SITE' --data '$MPARAM' )
 fi
fi

if echo $DATA | grep $KEY > /dev/null; then
 echo "$SITE = OK"
 if test -e "$GETAL/$SITE"; then
 rm -f $GETAL/$SITE
 fi
else
if test -e "$GETAL/$SITE"; then
 echo "Flag exist"
else
 SUBJECT="[ALERT] $SITE NOK"
 EMAIL=$MAILD
 EMAILMESSAGE="/tmp/email$SITE.txt"
 DATEEX=$(date '+%d/%m/%y %H:%M')
 echo "Site $SITE inaccessible le $DATEEX" > $EMAILMESSAGE
 echo "$SITE = NOK"
mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE
 touch $GETAL/$SITE
 rm -f $EMAILMESSAGE
fi
fi
echo ""
echo "----------------"
echo ""
done < $FILE

Etape 3 : 

Créer un fichier texte : liste.txt avec le listing des sites et le mot clé a rechercher

Exemple :

site1.fr|key1
site2.fr|key2

Etape 4 : Créer un cron toutes les minutes de monitsite.sh

Le script suivant permet de pourvoir :

– Installer proxmox de manière automatique

– Définir un master et un node

– Supprimer un node



#!/bin/bash
# KDE 2011 - kilian@desroches.net

# Script d'installation automatique de proxmox





function menu() {

clear

echo "####################################################"
echo "#                                                  #" 
echo "# Script d’installation PROXMOX / v1.xx            #"
echo "# KDE - kilian@desroches.net                       #"
echo "####################################################"


echo "1 – Installation de PROXMOX"
echo "2 – Definir un MASTER"
echo "3 – Definir un NODE et joindre le MASTER"
echo "4 – Supprimer un NODE"
echo "0 – Quitter"
echo ""
echo "Choix : "
read CHOIX


case $CHOIX in

1) install_central && menu;;
2) define_master && menu;;
3) define_node && menu;;
4) del_node && menu;;
0) exit;;

esac
}


function install_central() {

echo "INSTALLATION DE PROXMOX : "

echo "Vérification support VT"

SUPPORTVT=$(egrep '(vmx|svm)' /proc/cpuinfo)

if test -z '$SUPPORTVT'; then

echo "/!\ Le processeur de ne supporte pas KVM"
echo "Voulez vous installer OpenVZ ? [y]"
read OPENVZ
case $OPENVZ in
  [yYoO]*) install_ovz ;;
  [nN]*)  menu;;
esac

else
clear 
echo "Vérification support VT : OK"
install_proxmox

fi


}


function install_ovz(){

echo "INSTALLATION OPENVZ"

echo "Ajout des paramètres sources.list"

mv /etc/apt/sources.list /etc/apt/sources.list.bak

echo  "deb http://ftp.fr.debian.org/debian/ lenny main
deb-src http://ftp.fr.debian.org/debian/ lenny main

deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main

deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main" >> /etc/apt/sources.list

echo "Installation OpenVZ"

aptitude install linux-image-openvz-686

echo "Installation de Proxmox"

install_proxmox


}



function install_proxmox() {

echo "Insérer la version du kernel proxmox :"
read kernprox


if test -z $kernprox; then

echo "Version invalide"
sleep 3
install_proxmox

else


echo "Renommage du sources.list"
mv /etc/apt/sources.list /etc/apt/sources.list.bak

echo "Mise en place du nouveau sources.list"

echo -e "\ndeb http://ftp.debian.org/debian lenny main
\ndeb http://download.proxmox.com/debian lenny pve
\ndeb http://security.debian.org/ lenny/updates main" >> /etc/apt/sources.list

echo "Recuperation de la cle proxmox"
wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -

echo "Update et upgrade"
apt-get update && apt-get -y upgrade

echo "Installation DRBD - LVM2"
apt-get -y install drbd8-utils lvm2

echo "Mise en place du Kernel Proxmox $1"
aptitude safe-upgrade
aptitude install proxmox-ve-$1

echo "Mise en place d'openiscsi"
apt-get -y install open-iscsi iscsi-scst

echo "Relance du service PVEDAEMON et APACHE2"
/etc/init.d/pvedaemon restart && /etc/init.d/apache2 restart

echo "Update du grub"
update-grub

echo "Listing du boot"
echo "ls -l /boot"

echo "Rebooter la machine pour prise en compte du nouveau Kernel"

exit 0
fi

}



function define_master() {
echo "DEFINI LE MASTER : "
echo "Définition du master "
pveca -c

sleep 3


echo "Vérification de la definition du master "
pveca -l


sleep 3

menu

}





function define_node() {
echo "AJOUT NODE : "
echo "Insérer l'IP du serveur master :"
read IPMASTER

if test -z $IPMASTER; then
    echo "IP invalide"
    define_node

    else
    echo "Ajout de IP : $IPMASTER"
    pveca -a -h $IPMASTER
        echo "Vérification de synchro "
        pveca -l

sleep 3
#Retour au menu
menu


fi




}

function del_node() {
echo "SUPPRESSION NODE : "

echo "Affichage des nodes existantes : "
pveca -l


echo "Insérer le CTID du node à supprimer :"
read CTID

if test -z $CTID; then
    echo "CTID invalide"
    del_node

    else
    echo "Suppression : $CTID"
    pveca -d $CTID
        echo "Vérification des nodes "
        pveca -l

sleep 3
#Retour au menu
menu


fi


}


# Vérication du root
if [ "$(id -u)" != "0" ]; then
   echo "Le script doit etre execute en root"
   exit 1
    else
    menu
fi









Ssmtp permet à des applications d’envoyer des courriels via la commande /usr/sbin/sendmail. Contrairement à Postfix  il ne fait que rediriger les courriers vers un serveur SMTP externe. C’est donc un outil très léger et rapide, et qui ne demande que très peu de paramétrage.

A quoi cela peut servir ?

ssmtp peut permettre facilement :

  • à CRON, ou encore à la commande at, de publier leurs résultats ;
  • d’envoyer des mails via le terminal ;
  • aux CMS et LMS d’un environnement de développement lampp d’envoyer des courriels via sendmail (ex : tester les messages envoyés par Drupal).

Si vous voulez savoir si vous pouvez utiliser sendmail avant cette installation,  entrez : whereis sendmail

Si vous n’avez rien, l’installation et la configuration de ssmtp vous permettra d’utiliser sendmail.