voxdemonix : révision n°15 (09 août 2019 16:08:15)
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](https://wiki.0rion.netlib.re/lib/exe/fetch.php?media=tutoriel_fr:screenshot_tuto_conky_afficher_temperature_cpu_serveur_distant-conky_display_remote_cpu_temp.png)
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](https://fr.wikipedia.org/wiki/Apache_HTTP_Server) ou [Nginx](https://fr.wikipedia.org/wiki/NGINX) selon vos préférences. Par contre le [moteur PHP](https://fr.wikipedia.org/wiki/PHP) doit être fonctionnel et pouvoir utiliser les commandes exec().
Le script utilisé ne nécessite aucune dépendance tierce mais utilise [Bash](https://fr.wikipedia.org/wiki/Bourne-Again_shell).
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 :**
```bash
( 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](https://linuxfr.org/wiki/tuto-howto-debian-ubuntu-creer-manuellement-un-cluster-web#toc-installer-un-node))
1. **Créez un VHOST ou utilisez celui par défaut ( _/etc/apache2/sites-available/000-default.conf_ ).**
1. **Ajoutez le script suivant dans le dossier que vous avez choisi comme DocumentRoot dans votre VHOST :**
_temperature.php_
```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);
if (empty($cpu_temp[0]) && $cpu_temp[0] != 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](https://fr.wikipedia.org/wiki/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)
```bash
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]\{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]\{1\}.[0-9]\{1,\}%/${color yellow}&/; s/[1]\{0,1\}[08-9]\{1\}[0-9]\{1\}.[0-9]\{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
```bash
MonServer :
${goto 25}${execp curl --connect-timeout 5 -k --resolve http://10.8.42.42/temperature.php | sed '/\°C\|\°F/!d' | sed 's/\( [0-6]\{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]\{1\}.[0-9]\{1,\}%/${color yellow}&/; s/[1]\{0,1\}[08-9]\{1\}[0-9]\{1\}.[0-9]\{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é.
```bash
MonServer :
${goto 25}${execp torsocks curl --connect-timeout 7 -k --resolve http://blablablablabla.onion/temperature.php | sed '/\°C\|\°F/!d' | sed 's/\( [0-6]\{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]\{1\}.[0-9]\{1,\}%/${color yellow}&/; s/[1]\{0,1\}[08-9]\{1\}[0-9]\{1\}.[0-9]\{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
------------------------
```bash
# 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]\{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]\{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]\{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
=========
- [[FR] [Tuto/HowTo] [Debian/Ubuntu] Afficher dans un conky sur votre bureau la température CPU de vos serveurs](https://wiki.0rion.netlib.re/doku.php?id=tutoriel_fr:afficher_dans_un_conky_sur_votre_bureau_la_temperature_cpu_de_vos_serveurs) (article d'origine)