Comment générer une image png avec les commandes curl et inkscape
L'idée est de pouvoir générer une image png d'un graph pour pouvoir l'afficher sur une map weathermap, voici comment faire.
Prerequis
curl :
cURL est une commande polyvalente utilisée par les programmeurs pour la collecte et le transfert de données.
apt install curl
Dans les parametres de LibreNMS :
Selectionner "PNG" dans les parametres globaux, onglet Interface Web :
Weathermap :
Celebre plugin pour creer des maps
https://github.com/librenms-plugins/Weathermap
Récupération de l'URL du graph
Allez sur la page d'un graph comme sur l'exemple ci-dessous
Sur cette exemple l'url se compose comme suit
http://librenms.url/graphs/to=1718748300/id=1606/type=port_bits/from=1718661900/
Pour récuperer ce graph en png il faut transformer l'url comme suit :
http://librenms.url/graph.php?to=1718748300&id=1606&type=port_bits&from=1718661900.png
Pour faire court c'est juste une syntaxe à réspecter.
Si on veut voir le graph sur une période nommée (par exemple 6h)
http://librenms.url/graph.php?id=1606&type=port_bits&from=-6h
Ou 6 jours
http://librenms.url/graph.php?id=1606&type=port_bits&from=-6d
Sans la légend
http://librenms.url/graph.php?type=port_bits&from=-6d&legend=no
Maintenant que nous avons l'URL du graph, nous pouvons commencer les commandes pour récuperer le graph en .png
Récupération du graph en .png avec CURL :
Exemple (la sortie se positionne directement dans le répertoire image de weathermap)
curl -o /opt/librenms/html/plugins/Weathermap/images/graph.png "http://librenms.url/graph.php?device=44&type=device_mempool&height=100&width=512&legend=no"
Script Bash
nano graph.sh
#!/bin/bash
curl -o /opt/librenms/html/plugins/Weathermap/images/graph-1.png "http://librenms.url/graph.php?type=port_bits&id=1594&legend=no&height=100&width=512"
curl -o /opt/librenms/html/plugins/Weathermap/images/graph-2.png "http://librenms.url/graph.php?type=device_zywall_sessions&device=40&legend=no&height=100&width=512"
curl -o /opt/librenms/html/plugins/Weathermap/images/graph-3.png "http://librenms.url/graph.php?device=51&type=device_bits&legend=no&height=100&width=512"
curl -o /opt/librenms/html/plugins/Weathermap/images/graph-4.png "http://librenms.url/graph.php?device=44&type=device_mempool&legend=no&height=100&width=512"
Cron
crontab -e
Pour une actualisation toute les 5 minutes
*/5 * * * * sh /opt/script/graphpng.sh