Voici la syntaxe :
date mmjjhhmmaaaa
Ainsi pour le 3 juillet 2007 à 17h14, saisir :
[root@localhost root]# date 070317142007
Voici la syntaxe :
date mmjjhhmmaaaa
Ainsi pour le 3 juillet 2007 à 17h14, saisir :
[root@localhost root]# date 070317142007
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
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
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
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";
}
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
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)
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
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
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