[debian] Changer la date

Voici la syntaxe :
date mmjjhhmmaaaa

Ainsi pour le 3 juillet 2007 à 17h14, saisir :


[root@localhost root]# date 070317142007

Publié dans Système | Laisser un commentaire

[debian] Upgrade sarge vers etch

Remplacer « sarge » par « etch » dans « /etc/apt/sources.list »,

Puis, récupèrer les listes de packages Etch :


[ root@localhost root] # apt-get update

Il reste à mettre à jour la distribution :


[ root@localhost root] # apt-get dist-upgrade

Publié dans Système | Laisser un commentaire

[debian] Configurer le proxy pour apt-get

Rajouter, la ligne suivante dans le fichier /etc/apt/apt.conf (s’il n’existe pas le créer) :

Acquire::http::Proxy « http://192.168.0.1:3128″;

192.168.0.1 est votre serveur proxy
3128 le port d’écoute http du proxy.

EDIT:
On peut également généraliser la config du proxy pour toutes les applis avec des « exports »:

export http_proxy=http://ip:port
export ftp_proxy=ftp://ip:port

Publié dans Système | Laisser un commentaire

Synchronisation avec Rsync

Objectif: Synchroniser le répertoire /home de la machine B.lenorcy.fr avec celui de A.lenorcy.fr (le /home de B.lenorcy.fr va évoluer et devenir la copie conforme du /home de la machine A.lenorcy.fr).

Sur A.lenorcy.fr :


[root@A ~]# more /etc/rsyncd.conf
# fichier de configuration pour rsync
        motd file = /etc/motd
        max connexions = 1
        syslog facility = local3
        uid = root
        gid = root
        hosts allow = B.lenorcy.fr
#
        [home]
           comment  = arborescence des home a synchroniser
           path = /home
           read only = yes
           list = yes

La section [home] est en read only pour plus de sécurité…

Lancement du démon :


[root@A ~]# /etc/init.d/rsync start

Sur B.lenorcy.fr, on peut indiquer à rsync d’exlure quelques fichiers en créant par exemple le fichier /tmp/exlude suivant :


[root@B ~]# more /tmp/exclude
toto.txt
titi.pdf

Sur B.lenorcy.fr, on lance rsync :


[root@B ~]# /usr/bin/rsync -ravz A.lenorcy.fr::home /home  --delete --exclude-from=/tmp/exclude

Publié dans Système | Laisser un commentaire

Plugin Nagios pour vérifier la charge CPU

Ce plugin est écrit en Perl et utilise la commande sar. Cette commande donne le pourcentage moyen d’idle des 10 dernières minutes.

Problèmes :
- Il est inutile de faire des vérifications (check) avec un intervalle inférieur à 10 minutes…
- Entre minuit et 0h10 la commande sar n’affiche pas de moyenne -> on utilise la comme top qui donne une valeur quasi-instantamnée (moyenne sur un court intervalle)

check_cpu.pl :


#!/usr/bin/perl
# check_cpu.pl [warn] [critical]
sub print_help ();
sub print_usage ();
$PROG = "check_cpu";
if  ( @ARGV[0] eq "" || @ARGV[1] eq "" )
{
    print_usage ();
    exit 0;
}
$idle = `sar | /usr/bin/tail -n 2 | /usr/bin/head -n 1 | /bin/sed \'s/\ \ */ /g\' | cut -d\' \' -f7 | /bin/sed \'s/,/./g\'`;
if ($idle eq "\n")
{
# entre 0h00 et 0h10 la commande 'sar' n'est pas a jour...
$idle = `top -b -n 1 | grep \"Cpu(s)\" | cut -d\' \' -f11 | sed s/\%//g`;
}
$warning = @ARGV[0];
$critical = @ARGV[1];
$STATE_CRITICAL = 2;
$STATE_OK = 0;
$STATE_WARNING = 1;
$cpu = 100-$idle;

if ( $cpu >= $critical ){
        printf "Charge CPU CRITICAL - use : %g%",$cpu;
        printf " idle : %g%\n",$idle;
        exit $STATE_CRITICAL
        ;;
}

if ( $cpu >= $warning ){
        printf "Charge CPU WARNING - use : %g%",$cpu;
        printf " idle : %g%\n",$idle;
        exit $STATE_WARNING
        ;;
}else{
        printf "Charge CPU OK - use : %g%",$cpu;
        printf " idle : %g%\n",$idle;
        exit $STATE_OK
        ;;
}

sub print_help ()

{
        print($PROG,': 1.0');
}

sub print_usage ()

{
print_help();
printf "\n\nUsage : check_cpu.pl [warn] [critical]\n";
}

Publié dans Supervision | Laisser un commentaire

Ncftp pour échanger des fichiers entre 2 serveurs

Pour transférer des fichiers d’un serveur A vers un serveur B, je n’ai, parfois, pas d’autre alternative que d’utiliser ftp.
Voici un exemple de scripts shell (un sur A et l’autre sur B) permettant simplement le transfert automatisé de fichiers.

/usr/local/scripts/envoi-fichiers.sh sur le serveur A :


#!/bin/sh
#  toutes les nuits on va envoyer des fichiers via ncftp sur ftp anonymous
cd /home/moi/mesfichiers
tar cvf monarchive.tar *
/usr/bin/ncftp monftp.mondomaine.fr << EOF
cd echange
bin
put -f monarchive.tar
quit
EOF

Dans le cron du serveur A :

######## On envoie les fichiers a 6h0 ################
0 6 * * * /usr/local/scripts/envoi-fichiers.sh > /dev/null 2>&1

/usr/local/scripts/recup-fichiers.sh sur le serveur B :


#!/bin/sh
#  toutes les nuits on recupere via ncftp sur ftp anonymous
cd  /home/moi/mesfichiers
/usr/bin/ncftp monftp.mondomaine.fr << EOF
cd echange
bin
get  monarchive.tar
quit
EOF
tar xvf  monarchive.tar

Dans le cron du serveur B :


######## On recupere les fichiers a 6h15 ################
15 6 * * * /usr/local/scripts/recup-fichiers.sh > /dev/null 2>&1

Publié dans Shell, Système | Laisser un commentaire

Comment détecter la distribution Linux sur laquelle on est…

Voici le script suivant (adapté d’après ce site) :


#!/bin/sh
# Detects which OS and if it is Linux then it will detect which Linux Distribution.

OS=`uname -s`
REV=`uname -r`
MACH=`uname -m`

GetVersionFromFile()
{
        VERSION=`cat $1 | tr "\n" ' ' | sed s/.*VERSION.*=\ // `
}

if [ "${OS}" = "SunOS" ] ; then
        OS=Solaris
        ARCH=`uname -p`
        OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
elif [ "${OS}" = "AIX" ] ; then
        OSSTR="${OS} `oslevel` (`oslevel -r`)"
elif [ "${OS}" = "Linux" ] ; then
        KERNEL=`uname -r`
        if [ -f /etc/fedora-release ] ; then
                DIST='Fedora'
                PSUEDONAME=`cat /etc/fedora-release | sed s/.*\(// | sed s/\)//`
                REV=`cat /etc/fedora-release | sed s/.*release\ // | sed s/\ .*//`
        elif [ -f /etc/redhat-release ] ; then
                DIST='RedHat'
                PSUEDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//`
                REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//`
        elif [ -f /etc/SuSE-release ] ; then
                DIST=`cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//`
                REV=`cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ //`
        elif [ -f /etc/mandrake-release ] ; then
                DIST='Mandrake'
                PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
                REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
        elif [ -f /etc/debian_version ] ; then
                DIST="Debian `cat /etc/debian_version`"
                REV=""

        fi
        if [ -f /etc/UnitedLinux-release ] ; then
                DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
        fi

        OSSTR="${OS} ${DIST} ${REV} (${PSUEDONAME} ${KERNEL} ${MACH})"

fi

Exemple d’utilisation :


[root@menthe lenorcy]# sh detect_distro.sh
Linux Fedora 3 (Heidelberg 2.6.12-1.1381_FC3smp i686)

Publié dans Shell, Système | Laisser un commentaire

Authentification LDAP pour l’interface Web de Nagios

L’idée est d’avoir un .htaccess permettant l’authentification avec LDAP afin d’accéder à l’interface web de Nagios (version 2.0).

Extrait de mon httpd.conf (apache version 2.2) :


ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"


   Options ExecCGI
   AllowOverride All
   Order allow,deny
   Allow from all


Alias /nagios "/usr/local/nagios/share"


   Options None
   AllowOverride All
   Order allow,deny
   Allow from all


Création du .htaccess dans /usr/local/nagios/share et dans /usr/local/nagios/sbin :


AuthName "Controle d'acces"
AuthType Basic
AuthBasicProvider ldap
AuthBasicAuthoritative On
AuthzGroupFileAuthoritative On
AuthLDAPCompareDNOnServer on
AuthLDAPURL ldap://annuaire.mon-domaine.fr/ou=people,dc=mon-domaine,dc=fr?uid?sub?(objectClass=posixAccount)
require ldap-filter |(uid=utilisateur1)(uid=utilisateur2)(uid=utilisateur3)

Je modifie le cgi.cfg de la sorte :


use_authentication=1
#default_user_name=nagios
authorized_for_system_information=utilisateur1,utilisateur2,utilisateur3
authorized_for_configuration_information=utilisateur1,utilisateur2,utilisateur3
authorized_for_all_services=utilisateur1,utilisateur2,utilisateur3
authorized_for_all_hosts=utilisateur1,utilisateur2,utilisateur3

#Autorisation de l'execution de commandes via l'interface de nagios
#authorized_for_system_commands=nagiosadmin,nagios
#authorized_for_all_service_commands=nagiosadmin
#authorized_for_all_host_commands=nagiosadmin

Publié dans Supervision, Sécurité | Laisser un commentaire

Générer automatiquement les fichiers de configuration de Nagios

Les fichiers de configurations de Nagios (version 2.0) sont assez fastidieux à remplir si l’on doit y ajouter fréquement des nouvelles machines. Voici deux scripts que j’utilise pour m’éviter la saisie à la main de toutes les nouvelles bornes wifi…

PS : Je répertorie ces bornes dans le fichier bornes.wifi suivant :


bornesA: maborneA1
bornesA: maborneA2
bornesA: maborneA3
bornesB: maborneB1
bornesC: maborneC1
...

Scripts config-hosts-wifi-nagios.pl pour la génération du fichier hosts.cfg :


#!/usr/bin/perl
# Ce script permet d'eviter la saisie fastidieuse du fichier de configuration nagios : hosts.cfg
#
# Il permet d'ajouter toutes les bornes wifi dans nagios
#
# Exemple d'emploi: ./config-hosts-wifi-nagios.pl > /usr/local/nagios/etc/hosts-wifi.cfg
# Dans nagios.cfg, il faut indiquer :
# cfg_file=/usr/local/nagios/etc/hosts-wifi.cfg
$f1 = "/home/wifi/bornes.wifi";
open (IN,$f1) || die "impossible d'ouvrir le fichier $f1 \n";

while () {
        chop;
        $ligne=$_;
        ($site,$borne)= split(/ /,$ligne);
        $ip= `nslookup $borne | tail -n 2 | sed '/^[[:space:]]*\$/d' | sed 's/Address:\ //g'`;
        print STDOUT  "

define host{
        use                     generic-host            ; Name of host template to use
        host_name               $borne
        alias                   $borne
        address                 $ip        check_command           check-host-alive
        max_check_attempts      10
        notification_interval   120
        notification_period     24x7
        notification_options    d,r
        contact_groups  admins
        }"
;
}

Exemple d’utilisation :


perceval:~# perl /usr/local/scripts/config-hosts-wifi-nagios.pl > /usr/local/nagios/etc/hosts-wifi.cfg

Scripts config-hostgroups-wifi-nagios.sh pour la génération du fichier hostgroups.cfg :


#!/bin/sh
# Ce script permet d'eviter la saisie fastidieuse du fichier de configuration nagios : hostgroups.cfg
#
# Il permet d'ajouter toutes les bornes wifi dans le hostgroup "wifi-ap"
#
# Exemple d'emploi: ./config-hostgroups-wifi-nagios.sh > /usr/local/nagios/etc/hostgroups-wifi.cfg
# Dans nagios.cfg, il faut indiquer :
# cfg_file=/usr/local/nagios/etc/hostgroups-wifi.cfg

fichier2conf=/home/wifi/bornes.wifi
ligne=`cat $fichier2conf | cut -d' ' -f2 | tr '\n' ','`;
echo "define hostgroup{"
echo "   hostgroup_name wifi-ap"
echo "   alias Points d'acces WIFI"
echo "   members $ligne"
echo "}"
echo

Exemple d’utilisation :


perceval:~# sh /usr/local/scripts/config-hostgroups-wifi-nagios.sh > /usr/local/nagios/etc/hostgroups-wifi.cfg

Avant de relancer Nagios, il faut s’assurer que les fichiers de configuration que l’on a générés aient été inlus dans le fichier de configuration général nagios.cfg :


cfg_file=/usr/local/nagios/etc/hosts-wifi.cfg
cfg_file=/usr/local/nagios/etc/hostgroups-wifi.cfg

Ultime vérification de la configuration de Nagios :


perceval:~# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cf

Si c’est OK, on peut relancer Nagios :


perceval:~# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cf

Publié dans Supervision | Laisser un commentaire

Configurer le plugin Java JRE pour firefox

Lien vers le fichier « auto-extractible » :
http://www.java.com/fr/download/manual.jsp

A modifier suivant les configurations :


# Installation de JRE :
su
chmod a+x jre-1_5_0_06-linux-i586.bin
./jre-1_5_0_06-linux-i586.bin
cp -R jre-1_5_0_06/ /usr/java/

# Configuration pour Firefox :
ln -s /usr/java/jre-1_5_0_06/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/firefox-1.0.7/plugins/

# Suppression du fichier d'installation :
rm jre-1_5_0_06-linux-i586.bin

Publié dans web | Laisser un commentaire