Afficher les infos du processeur et de la mémoire dans une page web

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

infoproc.awk

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&eacute;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
HTML icon infoproc.html5.96 Ko
Etiquettes: 

Ajouter un commentaire

Filtered HTML

  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de s'assurer que vous êtes un utilisateur humain et non un logiciel automatisé de pollupostage.
CAPTCHA visuel
Entrez les caractères (sans espace) affichés dans l'image.