Conception SHELL
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
Pour installer il suffira d’exécuter un script nommé install.sh (en root)
Pré-requis
– Récupération de l’archive
wget http://www.kdesroches.fr/wp-content/uploads/2010/01/install.sh.zip
– Dézipper l’archive
unzip install.sh.zip
– Attribution de droit
chmod 777 install.sh
Installation
– Exécution du script :
./install.sh
#####################################################
## Script d’installation d’Apache 2 / PHP5 et APC ##
#####################################################
1 – Installation d’apache 2 et PHP5
2 – Installation d’APC pour PHP5
0 – Quitter
Note :
Les dépendances sont téléchargées et installées automatiquement via apt-get update
Pour l’installation d’apache2 et PHP5
Il suffira d’insérer le numéro afin que le script install automatiquement les dépendances d’apache2 et PHP5
Pour l’installation d’APC
Il suffira d’insérer le numéro afin que le script installe automatiquement les dépendances d’APC pour PHP5 , celui-ci compilera le module automatiquement , sauvegardera le PHP.INI dans /etc/php5/apache2/php.ini en /etc/php5/apache2/php.ini.bak et redemarrage Apache2
Voici une petite mise à jour du script de gestion de logs (rotation plus suppression)
Script pour purges permettant de faire une rotation de logs par date antérieure sur une fréquence donnée
– Nécessite la création d’un dossier archives
– Le script doit être présent en racine du répertoire défini par $DIR
Lancement du script :
/bin/bash purges.sh <fréquence 7-15>
Le script tar le contenu de traces de chaque appli et archive par date antérieur (j-1) puis efface le contenu de logs/* .
Variables à renseigner :
TAR=$DATE ».tar.gz » # archive la date
NOMARCHIVE= »archives » # archive la date
DIR= »/ »
LOGS=$DIR/ »logs »
———————————————————–
#!/bin/bash
# Ce script fait une rotation de logs et archive par dates dans une durée de fréquences définies
# KILIAN DESROCHES – kilian@desroches.net
############################################################
#paramètre
# Script ./purges.sh <frequence 7-15>
FREQ= »$1″ # Frequence
# calcule la date du jour
DATE=`TZ=MET+24 date + »%Y%m%d »`
TAR=$DATE ».tar.gz » # archive la date
NOMARCHIVE= »archives » # archive la date
DIR= »/ »
LOGS=$DIR/ »logs »
if [ -d $DIR/$NOMARCHIVE ]; then
if [ -d $DIR/$NOMARCHIVE/$DATE ]; then
écho « dossier existant »
else
écho « Création d’un répertoire date dans le répertoire archives »
mkdir $DIR/$NOMARCHIVE/$DATE
fi
# supprime les vieux répertoires archives
écho « Suppression des anciens répertoires »
ls -d $DIR/$NOMARCHIVE/2* | sort | head -lines=-$FREQ | xargs rm -rf
écho « compression en cours des traces »
tar -czf $TAR $LOGS>/dev/null
if [ -f $DIR/$TAR ]; then
écho « Copie des tars »
cp $DIR/$TAR $DIR/$NOMARCHIVE/$DATE/$TAR
rm $DIR/$TAR
rm -rf $LOGS/*.txt
fi
else
écho « Pas de dossier archive existant »
exit 1
fi
Cette source SH permet de faire une rotation de sauvegarde en créant des archives TAR.GZ de répertoire . Le principe est de créer un FLAG (drapeau) qui permettra au script de commencer son processus de sauvegarde , puis de supprimer le répertoire FLAG .
repertoire=/home/sauvegardes/backup_flag
if cd « $repertoire » 2>/dev/null; then # « 2>/dev/null » cache les messages d’erreur
echo « Rotation effective »
KEEP=7
DIR=/home/sauvegardes/archives
DIRS1=/home/sauvegardes/rep1
#DIRS2=/home/sauvegardes/rep2
#DIRS3=/home/sauvegardes/rep3
#DIRS4=/home/sauvegardes/rep4
#DIRS5=/home/sauvegardes/rep5
# calcule date du jour
DATE=`date –date=yesterday « +%Y-%m-%d »`
mkdir $DIR/$DATE
# supprime les vieux repertoires
ls -d $DIR/2* | sort | head –lines=-$KEEP | xargs rm -rf
# copie (hard links) les données
cp -R $DIRS1 $DIR/$DATE
#cp -R $DIRS2 $DIR/$DATE
#cp -R $DIRS3 $DIR/$DATE
#cp -R $DIRS4 $DIR/$DATE
#cp -R $DIRS5 $DIR/$DATE
# supprime le fichier flag
rm -R /home/sauvegardes/backup_flag
else
echo « Je ne peux pas aller dans $repertoire. »
fi
Script SH d’installation automatique d’oréon + nagios :
#!/bin/bash
## Script d’installation de Nagios 2 et Oréon 1.4.5 sur Debian Etch 4.0
## Desroches Kilian – 2007
## Licence GPL v3 et versions ultérieures
function menu() {
clear
echo « #################################################### »
echo « # # »
echo « # Script d’installation de Nagios et Oréon 1.4.5 # »
echo « # # »
echo « #################################################### »
echo « »
echo » *********** Partie installation *********** »
echo « »
echo « 1 – Compilation de Nagios à partir des sources (les sources doivent être dans le même répertoire que le script »
echo « »
echo « 10 – Installation de Nagios à partir des paquets stables »
echo « 11 – Installation des dépendances Oréon »
echo « 12 – Installation des dépendances PEAR »
echo « 13 – Download et Patch de Oréon 1.4->1.4.5 »
echo « 14 – Lancer la configuration de Oréon »
echo « »
echo » *********** Partie désinstallation ******** »
echo « »
echo « 20 – Désinstallation de Nagios »
echo « 21 – Désinstallation de Oréon »
echo « 22 – Désinstallation des dépendances PEAR »
echo « »
echo « 99 – Tout installer »
echo « 00 – Tout désinstaller »
echo « »
echo « 0 – Quitter »
echo « »
echo « Choix : »
read CHOIX
case $CHOIX in
1) compil_nagios && menu;;
10) install_nagios && menu;;
11) install_dep_oreon && menu;;
12) pear_dependencies && menu;;
13) dl_patch_oreon && menu;;
14) config_oreon && menu;;
20) uninstall_nagios && menu;;
21) uninstall_oreon && menu;;
22) uninstall_pear_dependencies && menu;;
99) install_nagios && install_dep_oreon && pear_dependencies && dl_patch_oreon && config_oreon && menu;;
00) uninstall_nagios && uninstall_oreon && uninstall_pear_dependencies && menu;;
0) exit;;
esac
}
function compil_nagios() {
#!/bin/bash
# Script d’installation de Nagios à partir des sources sur une distribution Debian ou compatible
## Desroches Kilian – 2007
# Licence GPL v3 et versions ultérieures
# Déclaration des variables
NAGIOS_VERSION= »2.9″
PLUGINS_VERSION= »1.4.8″
NAGIOS_DIR= »/usr/local/nagios »
NAGIOS_USER= »nagios »
NAGIOS_GROUP= »nagios »
NAGIOS_CMDGROUP= »nagcmd »
APACHE_USER= »www-data »
# Paramétrage du système (comptes utilisateurs, répertoires)
echo -e « \r\n Paramétrage du système en cours… »
test -d $NAGIOS_DIR || mkdir $NAGIOS_DIR
/usr/sbin/groupadd $NAGIOS_GROUP
/usr/sbin/groupadd $NAGIOS_CMDGROUP
if ! grep « ^$NAGIOS_USER: » /etc/passwd
then
/usr/sbin/useradd -m -g $NAGIOS_GROUP -s /bin/false $NAGIOS_USER
fi
chown $NAGIOS_USER.$NAGIOS_GROUP $NAGIOS_DIR
/usr/sbin/usermod -G $NAGIOS_CMDGROUP $NAGIOS_USER
/usr/sbin/usermod -G $NAGIOS_CMDGROUP $APACHE_USER
sleep 2
# Installation des paquets Debian dépendants
echo -e « \r\n Installation des paquets Debian dépendants »
/usr/bin/aptitude -y install autotools-dev binutils build-essential cpp cpp-4.1 debhelper dpatch dpkg-dev file g++ g++-4.1 gcc gcc-4.1 gettext gettext-base html2text intltool-debian libc6-dev libfreetype6 libfreetype6-dev libgd2-noxpm libgd2-noxpm-dev libjpeg62 libjpeg62-dev libmagic1 libperl-dev libperl5.8 libpng12-0 libpng12-dev libssp0 libstdc++6-4.1-dev linux-kernel-headers make patch po-debconf zlib1g-dev
# Décompression de l’archive Nagios
echo -e « \r\n Décompression de l’archive… »
tar zxf nagios-$NAGIOS_VERSION.tar.gz
echo -e « \r\n Archive décompressée…. »;sleep 2
# Préparation des sources
echo -e « \r\n Configuration des sources… »; sleep 2
cd nagios-$NAGIOS_VERSION
./configure –prefix=$NAGIOS_DIR –with-nagios-user=$NAGIOS_USER –with-nagios-group=$NAGIOS_GROUP –with-command-group=$NAGIOS_CMDGROUP > /dev/null
echo -e « \r\n Compilation des sources… »; sleep 2
make all
echo -e « \r\n Installation du programme… »;sleep 2
make install
echo -e « \r\n Installation du script d’initialisation dans /etc/init.d … »;sleep 2
make install-init
echo -e « \r\n Installation des modèles de fichiers de configuration… »;sleep 2
make install-config
echo -e « \r\n Installation du mode de commande… »;sleep 2
make install-commandmode
cd ..
# Installation des plugins Nagios
echo -e « \r\n Installation des plugins… »
echo -e « \r\n Installation des paquets Debian dépendants »
/usr/bin/aptitude -y install comerr-dev libkadm55 libkrb5-dev libldap2-dev libmysqlclient15-dev libnet-snmp-perl libpq-dev libradius1 libradius1-dev libsensors-dev libsensors3 libsnmp-base libsnmp-perl libsnmp9 libsnmp9-dev libssl-dev libwrap0-dev libgnutls-dev samba-client qstat fping
/sbin/ldconfig
# Décompression de l’archive Nagios Plugins
echo -e « \r\n Décompression de l’archive… »
tar zxf nagios-plugins-$PLUGINS_VERSION.tar.gz
echo -e « \r\n Archive décompressée…. »; sleep 2
echo -e « \r\n Configuration des sources… »; sleep 2
cd nagios-plugins-$PLUGINS_VERSION
./configure
echo -e « \r\n Compilation des sources… »; sleep 2
make
echo -e « \r\n Installation des plugins dans $NAGIOS_DIR/libexec… »;sleep 2
make install
}
function install_nagios() {
## Mise à jour d’aptitude
echo « ######################### »
echo « # # »
echo « # Mise à jour d’aptitude # »
echo « # # »
echo « ######################### »
aptitude update
## Installation de Apache 2
echo « ####################################### »
echo « # # »
echo « # Installation d’apache 2 et MySQL 5.0 # »
echo « # # »
echo « ####################################### »
aptitude install apache2 mysql-server-5.0
## Installation de Nagios 2.9 et de la doc
echo « ##################################################### »
echo « # # »
echo « # Installation de Nagios 2.9 et de sa documentation # »
echo « # # »
echo « ##################################################### »
aptitude install nagios2 nagios2-doc
}
function uninstall_nagios() {
## Purge de Apache 2
echo « ################################ »
echo « # # »
echo « # Purge d’apache 2 et MySQL 5.0 # »
echo « # # »
echo « ################################ »
aptitude purge apache2 mysql-server-5.0
## Purge de Nagios 2.9 et de la doc
echo « ############################################ »
echo « # # »
echo « # Purge de Nagios 2 et de sa documentation # »
echo « # # »
echo « ############################################ »
aptitude purge nagios2 nagios2-doc
}
function install_dep_oreon() {
## Installation des packages nécessaires à Oréon 1.4
echo « ##################################################### »
echo « # # »
echo « # Installation des packages nécessaires à Oréon 1.4 # »
echo « # # »
echo « ##################################################### »
aptitude install rrdtool librrds-perl libnet-snmp-perl php5 libapache2-mod-php5 php5-mysql php5-snmp php-pear php5-gd libgd2-xpm libgd2-dev libgd2-xpm-dev libpng12-0 libpng12-dev libconfig-inifiles-perl libcrypt-des-perl libdigest-hmac-perl libgd-perl libio-socket-inet6-perl libnet-snmp-perl libsocket6-perl librrdp-perl
}
function uninstall_oreon() {
## Purge des packages nécessaires à Oréon
echo « ############################################## »
echo « # # »
echo « # Purge des packages nécessaires à Oréon 1.4 # »
echo « # # »
echo « ############################################## »
aptitude purge rrdtool librrds-perl libnet-snmp-perl php5 libapache2-mod-php5 php5-mysql php5-snmp php-pear php5-gd libgd2-xpm libgd2-dev libgd2-xpm-dev libpng12-0 libpng12-dev libconfig-inifiles-perl libcrypt-des-perl libdigest-hmac-perl libgd-perl libio-socket-inet6-perl libnet-snmp-perl libsocket6-perl librrdp-perl
}
function pear_dependencies() {
## Installation des dépendances PEAR
echo « ##################################### »
echo « # # »
echo « # Installation des dépendances PEAR # »
echo « # # »
echo « ##################################### »
pear upgrade PEAR
pear upgrade DB
pear install -o -f –alldeps DB_DataObject DB_DataObject_FormBuilder MDB2 Date Numbers_Roman HTML_Common2 HTML_QuickForm2 HTML_QuickForm_advmultiselect HTML_Table Auth_SASL Image_Canvas Image_Color Image_Graph Image_GraphViz Mail_Mime Net_Traceroute Net_Ping Validate XML_RPC HTTP Mail Net_SMTP
}
function uninstall_pear_dependencies() {
## Désinstallation des dépendances PEAR
echo « ######################################## »
echo « # # »
echo « # Désinstallation des dépendances PEAR # »
echo « # # »
echo « ######################################## »
pear uninstall DB_DataObject DB_DataObject_FormBuilder MDB2 Date Numbers_Roman Numbers_Words HTML_Common2 HTML_QuickForm2 HTML_QuickForm_advmultiselect HTML_Table Auth_SASL Image_Canvas Image_Color Image_Graph Image_GraphViz Mail_Mime Net_Traceroute Net_Ping Validate XML_RPC HTTP Mail Net_SMTP
}
function dl_patch_oreon() {
## Téléchargement de la version 1.4 d’Oreon et décompression dans le répertoire /root
echo « ##################################################### »
echo « # # »
echo « # Téléchargement de Oréon et application des patchs # »
echo « # 1.4 -> 1.4.5 # »
echo « # # »
echo « ##################################################### »
cd /root
wget http://download.oreon-project.org/tgz/oreon-1.4.tar.gz
tar -xvzf oreon-1.4.tar.gz
## Téléchargement du patch 1.4.1 et application du patch
echo « ################################################ »
echo « # # »
echo « # Téléchargement et application du patch 1.4.1 # »
echo « # # »
echo « ################################################ »
cd /root
wget http://download.oreon-project.org/patch/or…patch-1.4-1.tgz
tar -xvzf oreon-patch-1.4-1.tgz
cd /root/oreon-1.4
for i in $(ls /root/oreon-patch/*.patch); do patch -p1 < ${i}; done
## Téléchargement du patch 1.4.2 et application du patch
echo « ################################################ »
echo « # # »
echo « # Téléchargement et application du patch 1.4.2 # »
echo « # # »
echo « ################################################ »
cd /root
wget http://download.oreon-project.org/patch/or…patch-1.4-2.tgz
mkdir oreon-patch-1.4-2
cd oreon-patch-1.4-2
tar -xvzf ../oreon-patch-1.4-2.tgz
cd /root/oreon-1.4
patch -p1 < /root/oreon-patch-1.4-2/22-oreon-2004_04_05_-_17_55.patch
## Téléchargement du patch 1.4.3 et application du patch
echo « ################################################ »
echo « # # »
echo « # Téléchargement et application du patch 1.4.3 # »
echo « # # »
echo « ################################################ »
cd /root
wget http://download.oreon-project.org/patch/or…patch-1.4-3.tgz
mkdir oreon-patch-1.4-3
cd oreon-patch-1.4-3
tar -xvzf ../oreon-patch-1.4-3.tgz
cd /root/oreon-1.4
patch -p1 < /root/oreon-patch-1.4-3/23-oreon-2007_04_10_-_16_27.patch
## Téléchargement du patch 1.4.4 et application du patch
echo « ################################################ »
echo « # # »
echo « # Téléchargement et application du patch 1.4.4 # »
echo « # # »
echo « ################################################ »
cd /root
wget http://download.oreon-project.org/patch/or…patch-1.4-4.tgz
tar -xvzf oreon-patch-1.4-4.tgz
cd /root/oreon-1.4
patch -p1 < /root/oreon-patch-1.4-4/24-oreon-2007_04_13_-_19_28.patch
cd /root/oreon-1.4/ODS_SRC_ETC
patch -p0 < 25-oreon-init_ods_2007_04_13.patch
## Téléchargement du patch 1.4.5 et application du patch
echo « ################################################ »
echo « # # »
echo « # Téléchargement et application du patch 1.4.5 # »
echo « # # »
echo « ################################################ »
cd /root
wget http://download.oreon-project.org/patch/or…patch-1.4-5.tgz
tar -xvzf oreon-patch-1.4-5.tgz
cd /root/oreon-1.4
patch -p1 < /root/oreon-patch-1.4-5/26-oreon-2007_04_24.patch
## Nettoyage du répertoire root : Suppression des archives (oreon, patchs oreon et des répertoires associés)
cd /root
rm -R oreon-1.4.tar.gz oreon-patch oreon-patch-1.4-1.tgz oreon-patch-1.4-2 oreon-patch-1.4-2.tgz oreon-patch-1.4-3 oreon-patch-1.4-4 oreon-patch-1.4-5 oreon-patch-1.4-3.tgz oreon-patch-1.4-4.tgz oreon-patch-1.4-5.tgz
}
function config_oreon() {
cd /root/oreon-1.4
sh ./install.sh
}
menu