Conky : le retour (howto)

arch 30 oct. 2015

Il y a 2 mois je vous parlais de Conky, cet utilitaire (Linux) de monitoring local hyper paramétrable et personnalisable.

Entre temps j’en ai eu marre des cercles et je viens de m’en refaire un autre, un brin plus complet ^^ Inutile de vous dire que j’aime le bleu… Je vous rassure la couleur se change, comme tout le reste.

Cette nouvelle mouture n’est plus lua mais fait tout de même appel à un script externe pour la partie Serveurs, le ping plus précisément. Elle repose sur .conky.rc, fichier caché à la racine de mon /home (et installé par défaut ou à créer) et ping.sh qui se trouve dans mes /Documents/Conky. Mais que vous pourrez bien évidemment déplacer du moment que vous indiquez le nouveau chemin dans le script Conky.

J’ai principalement refait les graphiques, pour me passer du script lua, ajouté un maximum d’informations “automatisées” et refait/ajouté les parties sur mes IP et les serveurs. Le but de cette dernière étant de m’assurer du ping, donc du fonctionnement, de certains serveurs/sites dont je m’occupe.

Conky_return

Voici les sources de Conky et du script. Je vous explique ensuite comment ils sont faits et vous pourrez ainsi les modifier à loisir. Vous pouvez en effet très simplement éditer votre script et en visualiser de suite les modifications rien qu’en l’enregistrant via votre éditeur de texte préféré.

Je vous recommande les sites suivants si vous voulez créer le vôtre de A à Z, ou presque :

.conky.rc

#==============================================================================
#                               conky_Aerya
# Date    : 29/10/2015
# Author  : Aerya
# Version : v0.2
# License : Distributed under the terms of GNU GPL version 2 or later
#
# https://upandclear.org/2015-10-30/conky-le-retour/
#
#==============================================================================

background yes
update_interval 1

cpu_avg_samples 1
net_avg_samples 2
temperature_unit celsius

double_buffer yes
no_buffers yes
text_buffer_size 2048
override_utf8_locale yes
use_xft yes
xftfont caviar dreams:size=10
xftalpha 0.5
uppercase no
update_interval 1

gap_x 1550
gap_y 20
minimum_size 300 900
maximum_width 350

own_window yes
own_window_type normal
own_window_transparent no
own_window_argb_visual yes
own_window_argb_visual yes
own_window_colour 000000
own_window_argb_value 230
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below

border_inner_margin 0
border_outer_margin 0
alignment top_left

draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no

# Couleurs
default_color FFFFFF
color1 Green #vert
color2 Red #rouge


TEXT

${font Ubuntu:size=8,weight:bold}${color}${alignc}${time %a} ${time %e %B %G} - ${color #6495ed}${time %H:%M:%S}

${font size=10,weight:bold}${color}Système ${color #6495ed}${hr 2}
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}${execi 86400 lsb_release -si} : ${alignr}${color}${execi 86400 lsb_release -sr} - ${execi 86400 lsb_release -sc}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Kernel : ${alignr}${color}$kernel  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Machine : ${alignr}${color}$nodename  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Uptime : ${alignr}${color}$uptime  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Processus : ${alignr}${color}$processes  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Charge : ${alignr}${color}$loadavg  


${font size=10,weight:bold}${color}Processeur ${color #6495ed}${hr 2}
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}${exec cat /proc/cpuinfo | grep 'model name' | cut -c 14-42 | uniq} :${alignr}${color}${freq_g}GHz . ${cpu}% . ${hwmon 0 temp 1}°C  
${offset 7}${color #6495ed}Core1 : ${color}${cpu cpu1}% $alignr ${exec awk '/cpu MHz/{i++}i==1{printf "%.f",$4; exit}' /proc/cpuinfo}MHz $alignr ${color #6495ed}${cpubar cpu1 6,150}  
${offset 7}${color #6495ed}Core2 : ${color}${cpu cpu2}% $alignr ${exec awk '/cpu MHz/{i++}i==2{printf "%.f",$4; exit}' /proc/cpuinfo}MHz $alignr ${color #6495ed}${cpubar cpu2 6,150}  
${offset 7}${color #6495ed}Core3 : ${color}${cpu cpu3}% $alignr ${exec awk '/cpu MHz/{i++}i==3{printf "%.f",$4; exit}' /proc/cpuinfo}MHz $alignr ${color #6495ed}${cpubar cpu3 6,150}  
${offset 7}${color #6495ed}Core4 : ${color}${cpu cpu4}% $alignr ${exec awk '/cpu MHz/{i++}i==4{printf "%.f",$4; exit}' /proc/cpuinfo}MHz $alignr ${color #6495ed}${cpubar cpu4 6,150}  
${offset 7}${color #6495ed}Core5 : ${color}${cpu cpu5}% $alignr ${exec awk '/cpu MHz/{i++}i==5{printf "%.f",$4; exit}' /proc/cpuinfo}MHz $alignr ${color #6495ed}${cpubar cpu5 6,150}  
${offset 7}${color #6495ed}Core6 : ${color}${cpu cpu6}% $alignr ${exec awk '/cpu MHz/{i++}i==6{printf "%.f",$4; exit}' /proc/cpuinfo}MHz $alignr ${color #6495ed}${cpubar cpu6 6,150}  
${offset 7}${color #6495ed}Core7 : ${color}${cpu cpu7}% $alignr ${exec awk '/cpu MHz/{i++}i==7{printf "%.f",$4; exit}' /proc/cpuinfo}MHz $alignr ${color #6495ed}${cpubar cpu7 6,150}  
${offset 7}${color #6495ed}Core8 : ${color}${cpu cpu8}% $alignr ${exec awk '/cpu MHz/{i++}i==8{printf "%.f",$4; exit}' /proc/cpuinfo}MHz $alignr ${color #6495ed}${cpubar cpu8 6,150}  

${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Top 3${alignr}   CPU    
${offset 7}${font Ubuntu:size=8,weight:normal}${color #e09495}${top name 1}${alignr}${top cpu 1}%  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #e0d094}${top name 2}${alignr}${top cpu 2}%  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #006633}${top name 3}${alignr}${top cpu 3}%  


${font size=10,weight:bold}${color}Mémoire ${color #6495ed}${hr 2}
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Utilisée : ${alignr}${color}$mem${color #6495ed}/$memmax  
${offset 7}${font Ubuntu:size=8,weight:normal}${color}$memperc%${color #6495ed}${alignr}${membar 6,150}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Swap : ${alignr}${color}$swap${color #6495ed}/$swapmax  
${offset 7}${font Ubuntu:size=8,weight:normal}${color}$swapperc% ${color #6495ed}${alignr}${swapbar 6,150}  

${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Top 3${alignr}   RAM   
${offset 7}${font Ubuntu:size=8,weight:normal}${color #e09495}${top_mem name 1}${alignr}${top_mem mem 1}%  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #e0d094}${top_mem name 2}${alignr}${top_mem mem 2}%  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #006633}${top_mem name 3}${alignr}${top_mem mem 3}%  


${font size=10,weight:bold}${color}Stockage ${color #6495ed}${hr 2}
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Home : ${alignr}${color}${fs_used /home}${color #6495ed}/${fs_size /home}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}${color}${fs_free_perc /home}% libres${alignr}${color #6495ed}${fs_bar 6,150 /home}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Cloud : ${alignr}${color}${fs_used /mnt/FON}${color #6495ed}/${fs_size /mnt/FON}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}${color}${fs_free_perc /mnt/FON}% libres${alignr}${color #6495ed}${fs_bar 6,150 /mnt/FON}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Kodi : ${alignr}${color}${fs_used /mnt/Films}${color #6495ed}/${fs_size /mnt/Films}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}${color}${fs_free_perc /mnt/Films}% libres${alignr}${color #6495ed}${fs_bar 6,150 /mnt/Films}  


${font size=10,weight:bold}${color}Réseau ${color #6495ed}${hr 2}
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Download : ${alignc}$color${downspeed enp0s25} / ${totaldown enp0s25}${alignr}${color #6495ed}${downspeedgraph enp0s25 10,130 6495ed ff5c2b}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Upload :     ${alignc}$color${upspeed enp0s25} / ${totalup enp0s25}${alignr}${color #6495ed}${upspeedgraph enp0s25 10,130 6495ed 77b753}  

${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Locale : ${alignr}${color0}${addr enp0s25}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Docker : ${alignr}${if_running docker}${color0}${addr docker0}${color2} - ${color 77B753}Up${else}${color2} - ${color FF0000} ∆ ${endif}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Tor : ${alignr}${if_running tor}${color0}${exec torsocks wget -qO- http://ipecho.net/plain 2> /dev/null ; echo }${color2} - ${color 77B753}Up${else}${color2} - ${color FF0000} ∆ ${endif}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}VPN : ${alignr}${if_up tun0}${color0}${addr tun0}${color2} - ${color 77B753}Up${else}${color2} - ${color FF0000} ∆ ${endif}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Publique : ${alignr}${color0}${execi 1800 wget -qO- http://ipecho.net/plain 2> /dev/null ; echo }  


${font size=10,weight:bold}${color}Serveurs ${color #6495ed}${hr 2}
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}ZNC :${alignr}${color}Tor/${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}${color} - ${color}Clair/${alignr}${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}XMPP :${alignr}${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}UpAndClearOrg :${alignr}${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Projet :${alignr}${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Usenet :${alignr}${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Test Online :${alignr}${if_match "{execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Test OneProvider :${alignr}${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}  
${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}VPN : ${alignr}${color}F1/${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}${color} - F2/${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}${color} - W/${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}${color} - S/${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}${color} - D/${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}${color}  

ping.sh
#!/bin/bash
#==============================================================================
#                               conky_Aerya
# Date    : 29/10/2015
# Author  : Aerya
# Version : v0.2
# License : Distributed under the terms of GNU GPL version 2 or later
#
# https://upandclear.org/2015-10-30/conky-le-retour/
#
#==============================================================================


if sudo ping -c 1 -W 2 $1 > /dev/null;
then
    echo "1"
else
    echo "0"
fi

Bloc de configuration

#==============================================================================

...

TEXT

Cette partie est la configuration du rendu visuel de Conky : emplacement, taille, police par défaut, couleur par défaut, délai de mise à jour (update_interval 1 = chaque seconde). Dans Conky toutes les durées sont exprimées en secondes.

Exemples de variables/code

${font Ubuntu:size=8,weight:bold}${color}${alignc}${time %a} ${time %e %B %G} - ${color #6495ed}${time %H:%M:%S}

Le plus simple est de définir le rendu de chaque ligne écrite :

  • ${font Ubuntu:size=8,weight:bold} : police Ubuntu (n’importe quelle police installée sur votre système sera prise en compte), taille 8, en gras (normal pour… normal)
  • ${color} : couleur. Si ${color} alors couleur de base, si ${color #6495ed} alors en bleu (couleur hexadécimale)
  • ${alignc} : alignement du texte ou du graphique qui va suivre cette variable. c pour centrer, r pour droite et l pour gauche

${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}${execi 86400 lsb_release -si} : ${alignr}${color}${execi 86400 lsb_release -sr} - ${execi 86400 lsb_release -sc} 

Ici j’ai utilisé la commande lsb-release pour afficher des informations sur ma distribution :

  • execi 86400 : exécution de la commande qui suit toutes les 86400 secondes. Pas forcément utile si le PC est éteint/allumé tous les jours ou en tous cas une fois par mois
  • lsb_release : commande à exécuter, suivi de son paramètre. Ce qui m’affiche bien ma distribution, sa version et son nom

lsb_release

${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}${exec cat /proc/cpuinfo | grep 'model name' | cut -c 14-42 | uniq} :${alignr}${color}${freq_g}GHz . ${cpu}% . ${hwmon 0 temp 1}°C 

Je souhaite l’affichage automatique du modèle de mon processeur et de ses informations temps réel :

  • ${exec cat /proc/cpuinfo | grep ‘model name’ | cut -c 14-42 | uniq} : affichage du modèle du processeur détecté par l’OS. Le uniq force l’affichage d’un seul, sinon il me sort l’info autant de fois qu’il compte de cœurs
  • ${freq_g}GHz : fréquence d’horloge avec son unité de mesure (qui n’est pas automatique)
  • ${cpu}% : pourcentage d’utilisation, là encore ajouter le symbole de mesure
  • ${hwmon 0 temp 1}°C: sa température + unité de mesure

Processeur

${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Utilisée : ${alignr}${color}$mem${color #6495ed}/$memmax 

Affichage de la mémoire utilisée/libre, en quantité

  • ${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed} : début de ligne à 7 pixels vers la droite pour l’esthétique (subjective, oui), police Ubuntu en taille 8 et normale, couleur bleue
  • Utilisée : texte à afficher à 7 pixels du bord, en Ubuntu/8, bleu
  • ${alignr}${color} : alignement à droite, couleur de base
  • $mem : mémoire utilisée, qui est affichée directement en GiB
  • ${color #6495ed}/$memmax : mémoire physique disponible, affichée en bleu

${offset 7}${font Ubuntu:size=8,weight:normal}${color}$memperc%${color #6495ed}${alignr}${membar 6,150}

Je voulais afficher un graphique, de la mémoire utilisée/totale et qu’il soit aligné à droite :

  • ${offset 7}${font Ubuntu:size=8,weight:normal}${color} : début de ligne à 7 pixels vers la droite pour l’esthétique (subjective, oui), police Ubuntu en taille 8 et normale, couleur de base
  • $memperc% : affichage de la mémoire utilisée en pourcentage (perc), valeur à laquelle il faut ajouter l’unité de mesure (GHz, MHz, %), ici %
  • ${alignr} : alignement à droite de ce qui suit, le graphique
  • ${membar 6,150} : graphique de la mémoire, de 6 pixels de haut sur 150 de large

Mémoire

${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Docker : ${alignr}${if_running docker}${color0}${addr docker0}${color2} - ${color 77B753}Up${else}${color2} - ${color FF0000} ∆ ${endif} 

Pour Docker et d’autres services je souhaite afficher un statut et/ou une IP s’il est actif et un indicateur plutôt flashy en cas d’inactivité.

  • ${if_running docker} : si le service, ici Docker, est activé

  • ${addr docker0}${color2} – ${color 77B753}Up: alors afficher l’IP Docker et Up en vert

  • ${else} : sinon, si Docker n’est pas activé

  • ${color FF0000} ∆: afficher le symbole ∆ en rouge

  • ${endif} : fin de la condition if (if else endif)

if_else_endif

Bloc des IP

Afin d’avoir un rapide aperçu de ma configuration réseau j’ai voulu lister les différents services installés et leurs IP s’ils sont actifs.

  • Locale : ${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Locale : ${alignr}${color0}${addr enp0s25} 

${addr enp0s25} : ma carte réseau utilisée se nomme enp0s25.  Vous devrez remplacer ce nom par celui de votre interface réseau nécessaire listée via la commande (en terminal) ifconfig.

  • Docker : ${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Docker : ${alignr}${if_running docker}${color0}${addr docker0}${color2} - ${color 77B753}Up${else}${color2} - ${color FF0000} ∆ ${endif}  

Si vous montez des containers locaux il est utile d’en avoir les IP “sous la main”. Explications déjà données pour le code.

  • Tor : ${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Tor : ${alignr}${if_running tor}${color0}${exec torsocks wget -qO- http://ipecho.net/plain 2> /dev/null ; echo }${color2} - ${color 77B753}Up${else}${color2} - ${color FF0000} ∆ ${endif}  

Afin de pouvoir surfer sur le réseau Tor j’ai installé un proxy local. Et non un relais, il n’y a donc que mon trafic qui l’utilise.

${exec torsocks wget -qO- http://ipecho.net/plain 2> /dev/null ; echo } : le site http://ipecho.net/plain permet de visualiser son IP. Mais comme je veux afficher celle utilisée par Tor, je dois faire ma requête à ce site via mon proxy sans quoi je n’affiche que mon IP normale. Je lance donc la requête via torsocks.

  • VPN : ${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}VPN : ${alignr}${if_up tun0}${color0}${addr tun0}${color2} - ${color 77B753}Up${else}${color2} - ${color FF0000} ∆ ${endif}  

Il m’importe de savoir en permanence si mon VPN est bien activé ou non. Aussi j’affiche le retour de l’interface virtuelle tun0 (le tunnel créé par le client OpenVPN sur le PC pour router le trafic via le VPN) afin de savoir si le service est bien lancé et, pour mes petites affaires personnelles, quelle IP interne m’est attribuée par le serveur VPN (10.8.0.6 ici).

  • Publique (VPN bis) : ${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Publique : ${alignr}${color0}${execi 1800 wget -qO- http://ipecho.net/plain 2> /dev/null ; echo }  

Afin de confirmer que je suis bien connecté via un VPN, et de savoir lequel vu que j’en utilise plusieurs, je fais toutes les 1800 secondes une requête au site http://ipecho.net/plain (mais cette fois-ci sans passer par le proxy Tor) afin de visualiser mon IP publiée sur Internet et donc visible de tous les sites que je fréquente.

Bloc des serveurs

J’ai le plaisir d’avoir plusieurs serveurs personnels. Je ne liste pas ici les “pro”.

Dans l’optique d’être réactif, ou juste informé, j’ai voulu afficher quasi en temps réel le rendu d’un ping vers chacun d’eux afin de savoir s’ils sont bien en ligne ou non. C’est là que j’utilise le script ping.sh. En effet Conky ne permettant pas d’obtenir directement l’information je lui demande simplement d’afficher le retour du ping généré par le script pour chaque IP entrée dans .conky.rc et de retranscrire cette information en Up vert ou ∆ rouge.

Exemple du bouncer ZNC : ${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}ZNC :${alignr}${color}Tor/${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}${color} - ${color}Clair/${alignr}${if_match "${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}  

J’ai 2 bouncers IRC : un sur Tor et un en “clair”, c’est-à-dire qui ne sort pas sur Tor. Le 1er permet de masquer l’IP du bouncer (du serveur qui le fait tourner), pour préserver mon anonymat, tout comme de me connecter à des serveurs IRC hébergés sur Tor. Le 2nd est utilisé pour se connecter à des serveurs IRC qui justement refusent Tor. Ils sont fort heureusement peu nombreux, il n’y a pas que des pirates/pédophiles/terroristes qui utilisent Tor…

  1. “${execi 1800 ~/Documents/Conky/ping.sh 111.111.111.111}” : je demande à Conky d’utiliser le script de ping toutes les 1800 secondes sur l’IP indiquée à la suite
  2. Le script va envoyer une requête à la machine et indiquer “1” s’il ping et “0” s’il ne ping pas (cf le code du script ping.sh au début)
  3. ${if_match / != “0”}${color 77B753}Up : si le résultat du script est différent de 0 (!= voulant dire “différent de”) alors Conky va afficher un Up vert

  4. ${else}${color FF0000}∆ : si au contraire le résultat du script est 0 Conky va afficher un ∆ rouge car ça indique que le serveur est hors ligne

Données à modifier obligatoirement pour les adapter à votre configuration

Il est évident que nous n’avons pas les mêmes configurations PC, réseau etc. Il convient donc de retirer/ajouter des éléments de votre Conky et d’en modifier d’autres afin de les adapter à vos besoins :

  • Pourcentage d’utilisation des cœurs : ${offset 7}${color #6495ed}Core1 : ${color}${cpu cpu1}% $alignr ${exec awk '/cpu MHz/{i++}i==1{printf "%.f",$4; exit}' /proc/cpuinfo}MHz $alignr ${color #6495ed}${cpubar cpu1 6,150} 

Ayant 8 cœurs j’affiche Core1 à Core8 et cpu1 à cpu8.

  • Disques locaux et/ou montés : ${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Cloud : ${alignr}${color}${fs_used /mnt/FON}${color #6495ed}/${fs_size /mnt/FON}  
    ${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}${color}${fs_free_perc /mnt/FON}% libres${alignr}${color #6495ed}${fs_bar 6,150 /mnt/FON}  

Je ne m’intéresse en local qu’à ma partition /home et n’ai monté que 2 disques distants : /mnt/FON pour mon Cloud et /mnt/Films pour le NAS qui alimente mon lecteur vidéo Kodi sur la TV.

  • Interfaces réseau. Je suis connecté à mon routeur en câble Ethernet : ${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Download : ${alignc}$color${downspeed enp0s25} / ${totaldown enp0s25}${alignr}${color #6495ed}${downspeedgraph enp0s25 10,130 6495ed ff5c2b}  

Ma carte réseau utilisée se nomme enp0s25.  Vous remplacerez ce nom par celui de votre interface réseau nécessaire listée via la commande (en terminal) ifconfig

  • Serveurs : ${offset 7}${font Ubuntu:size=8,weight:normal}${color #6495ed}Test Online :${alignr}${if_match "{execi 1800 ~/Documents/Conky/ping.sh 195.154.112.212}" != "0"}${color 77B753}Up${else}${color FF0000}∆${endif}  

Vous vous êtes rendu compte que j’ai mis une IP “d’exemple” dans le script avec 111.111.111.111. Pensez à mettre vos IP si vous reprenez des parties de ce code.

Bref, Conky est un superbe outil/jouet de monitoring local mais aussi en partie distant. Vous pouvez y ajouter des rendus de sondes de température CPU, GPU, de vitesse de ventilateurs, la météo, la musique que votre lecteur favoris est en train de jouer, des RSS, le nombre d’emails non lus de vos boîtes etc.

En plus d’être amusant à personnaliser c’est un bon levier d’apprentissage des bases du développement, du moins de la réflexion, quand on débute.

Mots clés