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

0
7
août
2019

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}' ; } & }

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.