Abstract green and white wavy lines on black background

TFK-Einträge automatisieren

Als Medienbeauftragter an einer Hamburger Schule sehe ich mich regelmäßig mit den Herausforderungen konfrontiert, die unser Time for Kids Internetfilter mit sich bringt. Obwohl das System seinen Zweck erfüllt, gestaltet sich die tägliche Arbeit damit oft mühsam und zeitintensiv. Doch anstatt mich über diese Umstände zu beschweren, habe ich für mich einen pragmatischeren Ansatz gewählt: Ich konzentriere mich darauf, meine Arbeitsabläufe so zu optimieren, dass sie möglichst effizient und zeitsparend sind.

Hier kommt Python ins Spiel, eine Programmiersprache, die sich hervorragend für solche Automatisierungsaufgaben eignet. In diesem Beitrag möchte ich Ihnen einen relativ simplen, aber äußerst nützlichen Workflow vorstellen, der mir dabei hilft, eine Vielzahl von Einträgen in unserem DHCP-Server auf der Time for Kids Appliance vorzunehmen, ohne dabei unnötig viel Zeit zu verlieren. Der manuelle Weg wäre hier nicht nur mühsam, sondern bei größeren Mengen an Geräten schlichtweg nicht praktikabel.

Die gute Nachricht: Die Voraussetzungen für diesen Workflow sind überschaubar. Du benötigst lediglich eine Python-Installation auf deinem Rechner sowie einige zusätzliche Module, die sich mit wenigen Befehlen installieren lassen. Der Aufwand für die Einrichtung ist minimal, der Nutzen hingegen erheblich.

Bevor du mit der Automatisierung beginnen kannst, sind einige vorbereitende Schritte notwendig. Diese Einrichtungsphase mag zunächst etwas aufwendig erscheinen, zahlt sich aber bei der späteren Nutzung definitiv aus.

Schritt 1: Erstellen der Datendatei

Lege zunächst eine CSV-Datei mit dem Namen „daten.csv“ im selben Verzeichnis an, in dem sich auch das Python-Script befindet. Falls du einen anderen Dateinamen oder Speicherort bevorzugst, kannst du dies später in der Funktion eintraege_vornehmen() entsprechend anpassen.

Schritt 2: Strukturierung der Eingabedaten

Befülle die Datei „daten.csv“ mit deinen DHCP-Einträgen nach folgendem Schema:

Geraet;Mac;IP
lehreripad121;30:C0:AE:C8:B3:91;10.6.10.122

21:51

Die erste Zeile enthält die Spaltenüberschriften und sollte unverändert bleiben – sie dient der besseren Orientierung. Ab der zweiten Zeile trägst du deine Geräte ein: Gerätename, MAC-Adresse und IP-Adresse, jeweils durch ein Semikolon getrennt. Diese Formatierung entspricht der Standardeinstellung von Excel, sodass du die Datei auch komfortabel mit Excel bearbeiten kannst.

Schritt 3: Vorbereitung der Time for Kids Oberfläche

Öffnen Sie die DHCP-Verwaltung auf Ihrer Time for Kids Appliance im Browser. Wichtig ist hierbei, dass Sie das Widget für die statischen DHCP-Einträge in voller Breite darstellen und an erster Position in der Ansicht platzieren. Diese einheitliche Darstellung ist entscheidend für die korrekte Funktionsweise der Automatisierung.

Schritt 4: Ermittlung der Button-Positionen

Nun kommt ein technisch wichtiger Schritt: Du musst die exakten Bildschirmpositionen der relevanten Bedienelemente bestimmen. Nutze hierfür die bereitgestellte Funktion position_finden(). Das Script gibt dir eine kurze Wartezeit, damit du genügend Zeit hast, zum richtigen Fenster zu wechseln und den Mauszeiger korrekt zu platzieren. Du musst zwei Positionen erfassen: den „+“-Button zum Hinzufügen eines neuen Eintrags sowie das erste Textfeld im daraufhin erscheinenden Popup-Fenster.

Schritt 5: Übertragung der ermittelten Koordinaten

Trage die im vorherigen Schritt ermittelten Positionswerte in die Funktion eintraege_vornehmen() ein. Achte dabei auf eine präzise Übernahme der Koordinaten.

Schritt 6: Anpassung des Scripts für den Produktivbetrieb

Jetzt musst du das Script für den eigentlichen Durchlauf vorbereiten: Kommentiere die Zeile mit position_finden() aus, indem du ein # vor Zeile 106 setzt. Gleichzeitig entfernst du das # vor eintraege_vornehmen() in Zeile 108, um diese Funktion zu aktivieren.

Schritt 7: Ausführung des Scripts

Sobald alle Vorbereitungen abgeschlossen sind, kannst du das Script starten. Ab diesem Moment übernimmt das Programm die Steuerung deines Computers. Stelle unbedingt sicher, dass das Browserfenster mit der geöffneten DHCP-Verwaltung der Time for Kids während der gesamten Laufzeit im Vordergrund bleibt. Greife nur im absoluten Notfall ein – lass das Script seine Arbeit verrichten. Falls doch etwas schiefgeht und du die Automatisierung stoppen musst, bewege einfach die Maus schnell in eine Bildschirmecke. Dies ist ein eingebauter Sicherheitsmechanismus, der das Script automatisch anhält.

Quellcode

Nachdem wir nun die Vorbereitungen und den theoretischen Ablauf besprochen haben, kommen wir zum Herzstück dieses Workflows: dem eigentlichen Python-Code. Im Folgenden findest du das komplette Script, das die automatisierte Eingabe der DHCP-Einträge in die Time for Kids Oberfläche übernimmt.

import pyautogui
import time
import pandas as pd
import pyperclip

def position_finden():
# Hilfsfunktion um Positionen zu ermitteln
print("Bewege Maus zum Button, Position wird in 5 Sek. angezeigt...")
time.sleep(5)
x, y = pyautogui.position()
print(f"Position: x={x}, y={y}")


def bewegung_klick(x, y, wartezeit=0.5):
# Bewegt Maus und klickt
pyautogui.moveTo(x, y)
time.sleep(wartezeit)
pyautogui.click()


def eingabe_feld(text, tab=True):
# Fügt Text über Zwischenablage ein
pyperclip.copy(text)
pyautogui.hotkey('command', 'v')
if tab:
pyautogui.press('tab')
time.sleep(0.3)


def eintraege_vornehmen():
# Sicherheitseinstellung
pyautogui.FAILSAFE = True # Maus in Ecke = Stop
pyautogui.PAUSE = 0.5 # Pause zwischen Aktionen

# CSV einlesen
df = pd.read_csv('daten.csv', sep=';')

print(f"Gefunden: {len(df)} Geräte")
print("Script startet in 3 Sekunden...")
print("(Maus in eine Ecke bewegen = Notfall-Stop)")
time.sleep(3)

# Durch jede Zeile iterieren
for index, row in df.iterrows():
geraet = str(row['Geraet'])
mac = str(row['Mac'])
ip = str(row['IP'])

print(f"\nVerarbeite {index + 1}/{len(df)}: {geraet}")

try:
# Popup öffnen
bewegung_klick(1420, 394)
time.sleep(2) # Warten bis Popup geladen ist

# Zum ersten Feld klicken
bewegung_klick(810, 388)
time.sleep(0.5)

# Felder ausfüllen
eingabe_feld(mac) # MAC-Adresse
eingabe_feld(ip) # IP-Adresse
eingabe_feld(geraet, tab=False) # Hostname (ohne Tab)

# Speichern
pyautogui.press('tab')
pyautogui.press('enter')
time.sleep(2)

print(f"{geraet} erfolgreich gespeichert")

except Exception as e:
print(f"Fehler bei {geraet}: {e}")
continue

print("\nFertig! Alle Einträge verarbeitet.")

position_finden()

#eintraege_vornehmen()

Wichtiger Hinweis zur Batch-Größe

Aus eigener Erfahrung empfehle ich dir dringend, nicht mehr als 30 Einträge in einem Durchgang zu verarbeiten. Bei größeren Mengen kam es bei unserer Time for Kids Appliance wiederholt zu Problemen. Teile größere Listen daher lieber in mehrere kleinere Batches auf – das kostet zwar etwas mehr Zeit, ist aber deutlich zuverlässiger.