Afficher dans un conky sur votre bureau les infos CPU de vos serveurs.


  • Prédateur

    Sommaire

    Ce tutoriel fonctionne sur : Ubuntu et Debian.
    (Si vous l’avez testé sur d’autres systèmes avec succès, n’hésitez pas à rajouter la compatibilité.)

    Introduction.

    capture écran exemple conky

    Nous allons voir ici comment récupérer sur un conky sur notre bureau Ubuntu ou Debian les températures (et le % d’utilisation) d’autres machines (serveurs, routeurs, etc) sur lesquels nous aurons installé un serveur Web avec PHP.

    Vous pouvez bien entendu utiliser Apache2 ou Nginx selon vos préférences. Par contre le moteur PHP doit être fonctionnel et pouvoir utiliser les commandes exec().

    Le script utilisé ne nécessite aucune dépendance tierce mais utilise Bash.

    Une valeur de -1°C indique dans la très grosse majorité des cas que le script php n’a pas réussi à récupérer l’information. Que se soit par absence de capteur ou suite à un bug.

    Mise en place.

    Côté Serveur

    1. Il faut un serveur web fonctionnel avec php, si vous ne disposez pas d’un installez les pré-requis suivants :

      ( apt update ; apt-get install -y apache2 php libapache2-mod-php php-mbstring php-dom php-apcu php-dev libsystemd-dev php-intl libapache2-mod-php; a2enmod headers rewrite ssl env dir mime ; a2dismod status )

    Note : certains packages précédemment cité ne sont peut-être pas requis. Tout tri serait le bienvenue. (liste des packages et modules récupéré ici)

    1. Créez un VHOST ou utilisez celui par défaut ( /etc/apache2/sites-available/000-default.conf ).

    2. Ajoutez le script suivant dans le dossier que vous avez choisi comme DocumentRoot dans votre VHOST :

    temperature.php

    <?php /* https://linuxfr.org/wiki/afficher-dans-un-conky-sur-votre-bureau-les-infos-cpu-de-vos-serveurs work on Ubuntu/Debian */ $infos =''; exec('T=$(cat /sys/class/thermal/thermal_zone0/temp); echo $(( $T / 1000 ))', $cpu_temp, $cpu_status_temp); if (empty($cpu_temp[0]) && !($cpu_temp[0]===0) || $cpu_status_temp>0){ $cpu_temp[0] = -1; } $infos .= 'CPU : '.$cpu_temp[0].'°C'; exec('top -b -n2 | grep "Cpu(s)"|tail -n 1 | awk \'{print $2 + $4}\'',$cpu_usage); if (empty($cpu_usage[0]) && $cpu_usage[0] != 0){ $cpu_usage[0] = -1; } $infos .= " ( ".$cpu_usage[0]."% )\n"; print_r($infos); ?>
    

    Côté Ordinateur de bureau ou portable

    Dans votre conky ajoutez une des commandes suivantes selon vos choix. Un exemple de conky basique est fournis après.

    Contact via nom de domaine forcé

    Ici on force l’adresse ip 10.8.42.42 pour le nom de domaine MonServer.infos. C’est utile s’il y a plusieurs noms de domaines sur la même IP, mais peu parfois ne pas fonctionner pour d’obscures raisons (bug)

    MonServer : ${goto 25}${execp curl --connect-timeout 5 -k --resolve MonServer.infos:80:10.8.42.42 http://MonServer.infos/temperature.php | sed '/\°C\|\°F/!d' | sed 's/\( [0-6]\{0,1\}[0-9]\{1\}\°C\)/${color lightgreen}&/; s/\( [7-8]\{1\}[0-9]\{1\}\°C\)/${color orange}&/; s/\( [9]\{1\}[0-9]\{1\}\°C\)/${color red}&/; s/\( [0-9]\{3,\}\°C\)/${color red}&/; s/\( [-]\{1\}[0-9]\{1,\}\°C\)/${color white}&/; s/\([0-9]\{1,\}\°C\)/&${color}/; s/[^-][1-7]\{0,1\}[0-9]\{0,1\}[.]\{0,1\}[0-9]\{1,\}%/${color yellow}&/; s/[1]\{0,1\}[08-9]\{1\}[0-9]\{1\}[.]\{0,1\}[0-9]\{0,1\}%/${color red}&/; s/-1%/${color white}&/; s/[0-9]\{1,\}%/&${color}/' | sed -E 's/42|69/😛/g' | { grep ^ || echo '${color red}- server down -${color}' ; } & }
    

    Contact direct

    MonServer : ${goto 25}${execp curl --connect-timeout 5 -k http://10.8.42.42/temperature.php | sed '/\°C\|\°F/!d' | sed 's/\( [0-6]\{0,1\}[0-9]\{1\}\°C\)/${color lightgreen}&/; s/\( [7-8]\{1\}[0-9]\{1\}\°C\)/${color orange}&/; s/\( [9]\{1\}[0-9]\{1\}\°C\)/${color red}&/; s/\( [0-9]\{3,\}\°C\)/${color red}&/; s/\( [-]\{1\}[0-9]\{1,\}\°C\)/${color white}&/; s/\([0-9]\{1,\}\°C\)/&${color}/; s/[^-][1-7]\{0,1\}[0-9]\{0,1\}[.]\{0,1\}[0-9]\{1,\}%/${color yellow}&/; s/[1]\{0,1\}[08-9]\{1\}[0-9]\{1\}[.]\{0,1\}[0-9]\{0,1\}%/${color red}&/; s/-1%/${color white}&/; s/[0-9]\{1,\}%/&${color}/' | sed -E 's/42|69/😛/g' | { grep ^ || echo '${color red}- server down -${color}' ; } & }
    

    Contact d’un Tor Hidden Service

    Nécessite d’avoir le paquet tor installé.

    MonServer : ${goto 25}${execp torsocks curl --connect-timeout 7 -k http://blablablablabla.onion/temperature.php | sed '/\°C\|\°F/!d' | sed 's/\( [0-6]\{0,1\}[0-9]\{1\}\°C\)/${color lightgreen}&/; s/\( [7-8]\{1\}[0-9]\{1\}\°C\)/${color orange}&/; s/\( [9]\{1\}[0-9]\{1\}\°C\)/${color red}&/; s/\( [0-9]\{3,\}\°C\)/${color red}&/; s/\( [-]\{1\}[0-9]\{1,\}\°C\)/${color white}&/; s/\([0-9]\{1,\}\°C\)/&${color}/; s/[^-][1-7]\{0,1\}[0-9]\{0,1\}[.]\{0,1\}[0-9]\{1,\}%/${color yellow}&/; s/[1]\{0,1\}[08-9]\{1\}[0-9]\{1\}[.]\{0,1\}[0-9]\{0,1\}%/${color red}&/; s/-1%/${color white}&/; s/[0-9]\{1,\}%/&${color}/' | sed -E 's/42|69/😛/g' | { grep ^ || echo '${color red}- server down -${color}' ; } & }
    

    Exemple de conky complet

    # INFOS : https://linuxfr.org/wiki/afficher-dans-un-conky-sur-votre-bureau-les-infos-cpu-de-vos-serveurs # http://conky.sourceforge.net/config_settings.html # Use Xft? use_xft yes xftfont Ubuntu Beta:size=9 xftalpha 0.8 text_buffer_size 2048 # Update interval in seconds update_interval 20 # This is the number of times Conky will update before quitting. # Set to zero to run forever. total_run_times 0 # Create own window instead of using desktop (required in nautilus) own_window yes own_window_transparent no own_window_argb_visual yes own_window_argb_value 235 # semi-transparent own_window_type normal own_window_class conky own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager background no # Use double buffering (reduces flicker, may not work for everyone) double_buffer yes # Minimum size of text area minimum_size 120 120 maximum_width 335 maximum_height 900 # Draw shades? draw_shades yes # Draw outlines? draw_outline no # Draw borders around text draw_borders no # Stippled borders? stippled_borders 0 # border margins border_inner_margin 2 # border width border_width 1 # Default colors and also border colors default_color cyan default_shade_color black default_outline_color black own_window_colour black color1 orange # Text alignment, other possible values are commented #alignment top_left alignment tm #alignment bottom_left #alignment bottom_right # Gap between borders of screen and text # same thing as passing -x at command line gap_x -378 gap_y 330 # Subtract file system buffers from usedmemory? no_buffers yes # set to yes if you want all text to be in uppercase uppercase no # Force UTF8? note that UTF8 support required XFT override_utf8_locale yes # Add spaces to keep things from moving about? This only affects certain objects. use_spacer none TEXT Server1 : ${goto 25}${execp curl --connect-timeout 5 -k --resolve Server1.infos:80:10.8.42.42 http://Server1.infos/temperature.php | sed '/\°C\|\°F/!d' | sed 's/\( [0-6]\{0,1\}[0-9]\{1\}\°C\)/${color lightgreen}&/; s/\( [7-8]\{1\}[0-9]\{1\}\°C\)/${color orange}&/; s/\( [9]\{1\}[0-9]\{1\}\°C\)/${color red}&/; s/\( [0-9]\{3,\}\°C\)/${color red}&/; s/\( [-]\{1\}[0-9]\{1,\}\°C\)/${color white}&/; s/\([0-9]\{1,\}\°C\)/&${color}/; s/[^-][1-7]\{0,1\}[0-9]\{0,1\}[.]\{0,1\}[0-9]\{1,\}%/${color yellow}&/; s/[1]\{0,1\}[08-9]\{1\}[0-9]\{1\}[.]\{0,1\}[0-9]\{0,1\}%/${color red}&/; s/-1%/${color white}&/; s/[0-9]\{1,\}%/&${color}/' | sed -E 's/42|69/😛/g' | { grep ^ || echo '${color red}- server down -${color}' ; } & } Server2 : ${goto 25}${execp curl --connect-timeout 5 -k --resolve Server2.infos:80:10.8.42.43 http://Server2.infos/temperature.php | sed '/\°C\|\°F/!d' | sed 's/\( [0-6]\{0,1\}[0-9]\{1\}\°C\)/${color lightgreen}&/; s/\( [7-8]\{1\}[0-9]\{1\}\°C\)/${color orange}&/; s/\( [9]\{1\}[0-9]\{1\}\°C\)/${color red}&/; s/\( [0-9]\{3,\}\°C\)/${color red}&/; s/\( [-]\{1\}[0-9]\{1,\}\°C\)/${color white}&/; s/\([0-9]\{1,\}\°C\)/&${color}/; s/[^-][1-7]\{0,1\}[0-9]\{0,1\}[.]\{0,1\}[0-9]\{1,\}%/${color yellow}&/; s/[1]\{0,1\}[08-9]\{1\}[0-9]\{1\}[.]\{0,1\}[0-9]\{0,1\}%/${color red}&/; s/-1%/${color white}&/; s/[0-9]\{1,\}%/&${color}/' | sed -E 's/42|69/😛/g' | { grep ^ || echo '${color red}- server down -${color}' ; } & } HomeRouter : ${goto 25}${execp curl --connect-timeout 5 -k --resolve HomeRouter.infos:80:10.8.42.44 http://HomeRouter.infos/temperature.php | sed '/\°C\|\°F/!d' | sed 's/\( [0-6]\{0,1\}[0-9]\{1\}\°C\)/${color lightgreen}&/; s/\( [7-8]\{1\}[0-9]\{1\}\°C\)/${color orange}&/; s/\( [9]\{1\}[0-9]\{1\}\°C\)/${color red}&/; s/\( [0-9]\{3,\}\°C\)/${color red}&/; s/\( [-]\{1\}[0-9]\{1,\}\°C\)/${color white}&/; s/\([0-9]\{1,\}\°C\)/&${color}/; s/[^-][1-7]\{0,1\}[0-9]\{0,1\}[.]\{0,1\}[0-9]\{1,\}%/${color yellow}&/; s/[1]\{0,1\}[08-9]\{1\}[0-9]\{1\}[.]\{0,1\}[0-9]\{0,1\}%/${color red}&/; s/-1%/${color white}&/; s/[0-9]\{1,\}%/&${color}/' | sed -E 's/42|69/😛/g' | { grep ^ || echo '${color red}- server down -${color}' ; } & }
    

    Farm Link

    Télécharger ce contenu au format Epub

    Commentaires : voir le flux atom ouvrir dans le navigateur

    https://linuxfr.org/wiki/afficher-dans-un-conky-sur-votre-bureau-les-infos-cpu-de-vos-serveurs


Log in to reply