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
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 ;
}
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.