Ping

Aus HB9FDZ
Zur Navigation springen Zur Suche springen

Einfaches Ping-Tool zur Überwachung und Protokollierung von ausfällen

import subprocess
import time
from datetime import datetime
import os

# IP-Adresse deines Servers
SERVER_IP = "192.168.1.100"  # ← bitte anpassen

# Ping-Intervall in Sekunden
PING_INTERVAL = 10

# Logdatei im aktuellen Verzeichnis
LOG_FILE = os.path.join(os.getcwd(), "ping_log.txt")

def ping_server(ip):
    try:
        # Windows verwendet '-n' statt '-c'
        result = subprocess.run(['ping', '-n', '1', ip], stdout=subprocess.DEVNULL)
        return result.returncode == 0
    except Exception as e:
        print(f"Fehler beim Pingen: {e}")
        return False

def log_event(message):
    with open(LOG_FILE, "a") as f:
        f.write(f"{datetime.now()} - {message}\n")

def monitor():
    print(f"Starte Überwachung von {SERVER_IP}...\n")
    down_since = None

    while True:
        if ping_server(SERVER_IP):
            print(f"{datetime.now()} - Ping erfolgreich.")
            if down_since:
                duration = datetime.now() - down_since
                log_event(f"Server wieder erreichbar. Ausfall dauerte {duration}.")
                down_since = None
        else:
            print(f"{datetime.now()} - ❌ Server nicht erreichbar!")
            if not down_since:
                down_since = datetime.now()
                log_event("Server nicht erreichbar.")
        time.sleep(PING_INTERVAL)

if __name__ == "__main__":
    monitor()