Module Lua ping
Le module ping permet d'effectuer des tests de connectivité réseau en envoyant des paquets ICMP (Internet Control Message Protocol) à une adresse IP ou un nom de domaine. Il est utile pour vérifier si un hôte est accessible sur le réseau.
Import
Configuration YAML
Le module ping nécessite une configuration spécifique pour fonctionner. Cette configuration est définie dans le fichier de configuration de l'agent.
iot:
modules:
ping:
- name: ping1 # nom unique du module
count: 3 # nombre de paquets à envoyer (défaut : 3)
timeout: 1000 # timeout total en millisecondes (défaut : 1000)
privileged: true # mode socket raw (défaut : true, nécessite root/cap_net_raw)
Détails de la configuration
name(string, requis) : Nom du module. Il doit être unique et ne pas contenir d'espaces ou de caractères spéciaux.count(integer) : Nombre de paquets ICMP à envoyer. Par défaut3.timeout(integer) : Timeout total en millisecondes pour l'ensemble des paquets. Par défaut1000.privileged(boolean) : Sitrue, utilise des sockets raw (nécessite root oucap_net_raw). Par défauttrue.
API Lua
Liste des fonctions
| Fonction | Signature Lua | Rôle | Retour (succès) | Retour (échec) |
|---|---|---|---|---|
ping |
stats, err = ping.ping(target[, count[, timeout_ms]]) |
Test de connectivité ICMP. | table, nil |
nil, "msg" |
| Champs | ping.name, ping.type |
Métadonnées du module. | – | – |
ping.ping(target[, count[, timeout_ms]])
Effectue un test de connectivité en envoyant des paquets ICMP à l'adresse cible spécifiée.
- Paramètres :
target(string) : L'adresse IP ou le nom de domaine à tester.count(integer, optionnel) : Nombre de paquets ICMP à envoyer. Par défaut, utilise la valeur de configuration.-
timeout_ms(integer, optionnel) : Timeout total en millisecondes. Par défaut, utilise la valeur de configuration. -
Retour :
- En cas de succès : tableau de résultats,
nil. - En cas d'erreur :
nil, message d'erreur.
Le tableau de résultats contient :
* target : L'adresse IP résolue de la cible.
* sent : Le nombre de paquets envoyés.
* received : Le nombre de paquets reçus.
* packet_loss : Le pourcentage de perte de paquets (0-100).
* min_rtt_us : Le temps de réponse minimum en microsecondes.
* avg_rtt_us : Le temps de réponse moyen en microsecondes.
* max_rtt_us : Le temps de réponse maximum en microsecondes.
* stddev_us : L'écart type du temps de réponse en microsecondes.
local ping = require("ping1")
local result, err = ping.ping("example.com", 4, 2000)
if result then
print("Ping réussi :")
print("Cible : " .. result.target)
print("Paquets envoyés : " .. result.sent)
print("Paquets reçus : " .. result.received)
print("Perte de paquets : " .. result.packet_loss .. "%")
print("RTT min : " .. result.min_rtt_us .. " us")
print("RTT moyen : " .. result.avg_rtt_us .. " us")
print("RTT max : " .. result.max_rtt_us .. " us")
print("RTT écart type : " .. result.stddev_us .. " us")
else
print("Erreur lors du ping : " .. err)
end
Exemple complet
local ping = require("ping1")
-- Liste des hôtes à surveiller
local hosts = {
"google.com",
"192.168.1.1",
"8.8.8.8"
}
for _, host in ipairs(hosts) do
local result, err = ping.ping(host, 3, 1000)
if result then
if result.received > 0 then
print(string.format("%s : OK (%.2f ms)", host, result.avg_rtt_us / 1000))
else
print(string.format("%s : UNREACHABLE (100%% loss)", host))
end
else
print(string.format("%s : ERROR (%s)", host, err))
end
end
Champs Lua associés
ping.name: Retourne le nom de l'instance du module.ping.type: Retourne le type du module ("ping").