Exemple extrait du Linux/Magazine N° 131 d'octobre 2010 page 52.
Le script infoproc.awk utilise les fichiers virtuels /proc/cpuinfo et /proc/meminfo pour extraire les informations à afficher dans une page HTML infoproc.html. Les fichiers sont à placer en derniers paramètres et peuvent être traités différemment par les variables FILENAME et FNR. La sortie du script est redirigée vers le fichier infoproc.html.
L'en-tête et la fin de page HTML sont codés dans le bloc BEGIN et END.
Le fichier virtuel /proc/cpuinfo contient des enregistrements séparés par une ligne vide. Chaque champs des enregistrements est défini sur une ligne. Pour ce fichier, la variable de séparation d'enregistrement RS est donc égale à un saut de ligne "\n\n" et la variable de séparation des champs FS est égale à un retour-chariot "\n". Le fichier /proc/meminfo contient un seul enregistrement et les champs sont séparés par un retour-chariot, aussi les variables RS et FS n'ont pas à être modifiées entre ces fichiers.
Télécharger le script
Détail du script infoproc.awk
$ nl infoproc.awk
1 BEGIN{
2 RS="\n\n" # Separateur d'enregistrement
3 FS="\n" # Separateur de ligne
4 # En-tete et debut de page HTML
5 print "<html>"
6 print "<head>"
7 print "<title>Informations CPU et mémoire</title>"
8 print "<style type=\"text/css\">"
9 print "table {border: solid thin; padding 10px; margin 5px}"
10 print "table.proc {color: DarkSlateBlue; border-color: DarkSlateBlue}"
11 print "table.proc caption {color: white; background: DarkSlateBlue; text-align: center}"
12 print "table.mem {color: DarkGreen; border-color: DarkGreen}"
13 print "table.mem caption {color: white; background: DarkGreen; text-align: center}"
14 print "</style>"
15 print "</head>"
16 print "<body>"
17 print "<table><tr>"
18 }
19 FILENAME ~ /cpuinfo$/ { print "<td valign=\"top\"><table class=\"proc\">"}
20 FILENAME ~ /meminfo$/ { print "<td valign=\"top\"><table class=\"mem\">"}
21 {
22 for(i=1; i<=NF; i++){
23 split($i, cpu, ":")
24 if(i==1) print "<caption>", cpu[1], cpu[2], "</caption>"
25 else print "<tr><td>", cpu[1], "</td><td>", cpu[2], "</td></tr>"
26 }
27 print "</table></td>"
28 }
29 END{
30 # Fin de page HTML
31 print "</tr></table>"
32 print "</body>"
33 print "</html>"
34 }
$
Exécution du script
$ awk -f /root/infoproc.awk /proc/cpuinfo /proc/meminfo > /var/www/infoproc.html
Résultat obtenu
Fichier attaché | Taille |
---|---|
infoproc.html | 5.96 Ko |