(Courriels de diversion: <neigea@discerneras-remorque.com> <apitoye@eczema-vaporises.com> <craquerions@imaginerent-infligiez.com> <fluctuerai@retrace-ondulait.com> <taillait@attirerent-equipez.com> <homographe@reveillerez-convoque.com> <amputiez@zigzaguaient-couvrir.com> <grisonnerais@diffusaient-depredation.com> <putain@encapuchonnee-couronnees.com> <tremoussements@claudicantes-reussirai.com> )
L'un des princpaux bugs reste l'impossibilité d'imprimer sur une seule page. Le script semble mieux marcher sous debian et mandrake. Le script génére un fichier html du nom de la machine, par exemple localhost.html #!/bin/bash #Ce script est sous licence GPL. #Ce script a été créé pour répondre au besoin du CULTe (LUG de toulouse) # http://www.culte.org #Ce script donne certaines des caractéristiques principales d'une machine. #auteur: Jean-Michel Gay #date: 6 décembre 2004 #date:19 décembre 2004: retouches, suite aux tests de la veille (heure française). #on ne genére que du html; pas de texte OUTPUT=html verbose=off ###########################" Quelques routines générales #html:balise de début de table html_tab_start () { echo "<table>" } #html:balise de fin de table html_tab_stop () { echo "</table>" } #html:balise internes à la table html_tab_line () { echo "<tr>" echo "<td>" echo $1 echo "</td>" echo "<td>" echo $2 echo "</td>" echo "</tr>" } #html: création d'une table d'une ligne html_make_sample_table () { html_tab_start sed 's!^\(.*\)$!<tr><td>\1</td></tr>!g' | sed 's!:!</td><td>!g' html_tab_stop } # création d'une table d'une ligne make_sample_table () { if [ html = $OUTPUT ] then html_make_sample_table else cat fi } #indentation d'un flux indent () { if [ html = $OUTPUT ] then if [ text2 = "$1" ] then sed 's!^\(.*\)$!\ \ \ \1<br />!g' fi cat else sed "s/^/ /g" fi } #affichage d'un titre de section section () { echo if [ html = $OUTPUT ] then echo "<h4>" fi echo $1 : if [ html = $OUTPUT ] then echo "</h4>" fi } ###########################" Routines de détéction #détection du système #Donne la version du noyau, et le nom de la distribution #note: j'ai un doute sur le issu. Dans mon cas, ca donne Mandrake 10. detect-sys () { kern=`uname -r ` syst=`cat /etc/issue | head -n 1` # FIXME : issue semble intéressant pour une Debian, ou une Mandrake # Il ne l'est pas pour une s*ware html_tab_start html_tab_line "noyau" "$kern" html_tab_line "système" "$syst" html_tab_stop } #detection du cpu #en se basant sur les infos de /proc detect-cpu () { cat /proc/cpuinfo | grep -e "^\(model name\|cpu MHz\|bogomips\)" } #détéction de la mémoire RAM. detect-mem () { cat /proc/meminfo | grep "MemTotal" #experimental: semmble détécter les barettes! cat /proc/mtrr | sed "s!^.*size=\(.*\):.*write-\(.*\),.*!\2 : \1!g" | sed "s/back/barette/g" | sed "s/combining/video/g" } #detection des modules ''hard'' #En fait, on ne s'interesse qu'aux modules qui nous intéressent. #Mais quels sont-ils? detect-mod () { html_tab_start lsmod | grep -v Module| ( while read a b do ( #echo $a desc=`modinfo $a | grep "^description:" | sed 's/^description://g' ` #grep -v "^depends:" | #grep -v "^alias:" | #grep -v "^parm:"| case $desc in *Audio* | *Midi* | *sound* | *Sound* ) #FIXME: est on intéréssé par les modules de son? ;; *ether* | *Ether* | *Modem* ) #echo $a $desc html_tab_line "$a" "$desc" ;; esac #echo "### " $a $desc | indent ) done ) html_tab_stop } #detection des disques #On récupére les informations principales sur les 4 disques IDE. detect-disk () { for disk in hda hdb hdc hdd do DSK=/proc/ide/$disk if [ -d $DSK ] then media=`cat $DSK/media` model=`cat $DSK/model` echo $disk: $media: $model ( if [ cdrom != $media ] then capacity=`cat $DSK/capacity` geometry=`cat $DSK/geometry` echo "capacité: " $capacity "blocs/secteurs" echo "géométrie:" $geometry fi #echo $media #echo $model ) | indent text2 | sed "s!^!::!g" fi if [ on = $verbose ] then # Tant que l'on y est: liste des partitions fdisk -l /dev/$disk | indent text2 | indent text2 fi done } #Detection de la configuration réseau courante. (adresses IP). detect-net () { ifconfig | grep "inet add?r" | grep -v 127.0.0.1 } #Detéction du matériel présent sur le bus PCI. detect-pci () { lspci | grep "controller:" | sed "s/^..:..\.. //g" | sed 's!controller:!:!g' } ###########################" Routines de détéction principale #detection de tout detect-all () { host=`hostname ` today=`date "+%A %d %B %Y"` if [ html = $OUTPUT ] then today="<small> $today </small>" fi echo ":$host:$today" | make_sample_table section "Système" detect-sys | indent section "Processeur" detect-cpu | make_sample_table section "Mémoire" detect-mem | make_sample_table section "Disques" detect-disk | make_sample_table section "Réseau" detect-net | indent section "Modules spécifiques" detect-mod | indent section "Pci" detect-pci | make_sample_table } ###########################" Verification de l'environnement d'execution du script. verif () { user=`whoami` if [ root != $user ] then echo "Vous devez être root, pour lancer ce script!" exit 1 fi if [ /bin/bash != $BASH ] then echo "Désolé, ce script n'a été testé que sous bash!" exit 1 fi } ###########################" Programme principal verif #RESULT=fiche.txt SUFFIXE=".html" RESULT=`hostname`$SUFFIXE detect-all > $RESULT #cat $RESULT -------------------------------------------------------------------- Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>