Files
lan_checker/checkers/ping.py
Antoine Van Elstraete b0d571ae26 Add French docstrings and README
- Docstrings for all modules, classes and methods
- README.md with installation and usage instructions
- Update CLAUDE.md with dns.py

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 18:25:20 +01:00

78 lines
2.2 KiB
Python

"""
Checker Ping.
Vérifie la disponibilité d'un hôte via ICMP ping.
"""
import subprocess
import time
import platform
from .base import BaseChecker, CheckResult
class PingChecker(BaseChecker):
"""
Vérifie la disponibilité d'un hôte via ping ICMP.
Configuration YAML:
host: Adresse IP ou nom d'hôte à vérifier (obligatoire).
count: Nombre de paquets à envoyer (défaut: 1).
timeout: Délai d'attente en secondes (défaut: 5).
"""
def check(self) -> CheckResult:
"""
Exécute un ping vers l'hôte configuré.
Adapte automatiquement la commande ping selon le système
d'exploitation (Windows ou Linux/macOS).
Returns:
CheckResult avec success=True si l'hôte répond.
"""
host = self.config["host"]
count = self.config.get("count", 1)
timeout = self.config.get("timeout", 5)
# Adapte la commande ping selon l'OS
if platform.system().lower() == "windows":
cmd = ["ping", "-n", str(count), "-w", str(timeout * 1000), host]
else:
cmd = ["ping", "-c", str(count), "-W", str(timeout), host]
start = time.time()
try:
result = subprocess.run(
cmd,
capture_output=True,
text=True,
timeout=timeout + 5
)
response_time = (time.time() - start) * 1000 # ms
if result.returncode == 0:
return CheckResult(
success=True,
message="Host is reachable",
response_time=response_time
)
else:
return CheckResult(
success=False,
message="Host is unreachable",
response_time=None
)
except subprocess.TimeoutExpired:
return CheckResult(
success=False,
message="Ping timeout",
response_time=None
)
except Exception as e:
return CheckResult(
success=False,
message=f"Ping error: {e}",
response_time=None
)