Aller au contenu

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.

Pour l'importer il faut utiliser la déclaration suivante :

local ping = require("ping1") 
-- remplacer serial par le name dans le fichier de configuration

Configuration

Le module ping nécessite une configuration spécifique pour fonctionner. Cette configuration est définie dans le fichier de configuration de l'agent.

Pour la configuration voici un exemple de toutes les options possibles :

iot:
  modules:
    ping:
      - name: ping1 # nom du module
        count: 4 # nombre de paquets à envoyer
        timeout: 5 # timeout en secondes
        privileged: false # si true, le module doit être exécuté avec des privilèges élevés (root)

Détails de la configuration

  • name : Nom du module. Il doit être unique et ne pas contenir d'espaces ou de caractères spéciaux.
  • count : Nombre de paquets ICMP à envoyer. Par défaut, c'est 4.
  • timeout : Temps d'attente pour chaque réponse. Par défaut, c'est 5 secondes.
  • privileged : Si true, le module doit être exécuté avec des privilèges élevés (root). Par défaut, c'est false.

Fonctions Lua

ping.ping(target, [count, timeout])

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 (number) : Le nombre de paquets ICMP à envoyer. Par défaut, c'est 4.
  • timeout (number) : Le temps d'attente pour chaque réponse en secondes. Par défaut, c'est 5.

  • Retour :

  • Un tableau contenant les résultats du test de connectivité, y compris le temps de réponse pour chaque paquet envoyé :
    • target : L'adresse cible.
    • sent : Le nombre de paquets envoyés.
    • received : Le nombre de paquets reçus.
    • packet_loss : Le pourcentage de perte de paquets.
    • min_rtt_us : Le temps de réponse minimum en microseconde.
    • avg_rtt_us : Le temps de réponse moyen en microseconde.
    • max_rtt_us : Le temps de réponse maximum en microseconde.
    • stddev_rtt_us : L'écart type du temps de réponse en microseconde.
local ping = require("ping1")

local result = ping.ping("example.com", 4, 5)
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_rtt_us .. " us")
else
    print("Erreur lors du ping.")
end

Champs Lua associés

  • ping.name : Retourne le nom de l'instance ping.
  • ping.type : Retourne le type du module (ici, ping1).