Wiki source code of RangeeOS - Namensauflösung bei Netzwerkverfügbarkeit (Host Datei editieren)
Version 1.1 by Tobias Wintrich on 2026/09/24 10:04
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | Vor kurzem hatten wir bei einem Kunden das Problem, dass der TCMS, bei aktiver OpenVPN Verbindung über eine andere IP Adresse angesprochen werden musste, als ohne aktive VPN Verbindung. |
| 2 | |||
| 3 | Generell wäre hier die einfache Lösung die Einrichtung eines SplitDNS. So dass der Hostname der TCMS extern anders aufgelöst wird als über einen internen DNS Server. Dieser DNS Server muss dann lediglich auch in der VPN Verbindung genutzt werden. Dies war im aktuellen Fall allerdings nicht umsetzbar. | ||
| 4 | |||
| 5 | Als Lösung wurde nun ein Skript installiert, welches in Regelmäßigen Abständen prüft ob eine IP per Ping erreichbar ist. Ist dies der Fall, wird ein passender Eintrag in die lokale Hostdatei des Thin Clients geschrieben. Ist die IP nicht erreichbar, wird der Eintrag wieder entfernt. | ||
| 6 | |||
| 7 | = Skript einrichten = | ||
| 8 | |||
| 9 | Das Skript kann über **Werkzeuge** -> **Skripte** -> **Neue Verbindung** konfiguriert angelegt werden. Es müssen folgende Optionen gesetzt sein: | ||
| 10 | |||
| 11 | * Name: Frei wählbar | ||
| 12 | * Als root ausführen: Aktiviert | ||
| 13 | * ((( | ||
| 14 | Skript: | ||
| 15 | |||
| 16 | (% class="box infomessage" %) | ||
| 17 | ((( | ||
| 18 | "TARGET_IP" und "HOSTNAME" müssen noch entsprechend angepasst werden | ||
| 19 | ))) | ||
| 20 | |||
| 21 | {{{# --- KONFIGURATION --- | ||
| 22 | TARGET_IP="192.168.222.254" # Ersetze dies mit der gewünschten IP | ||
| 23 | HOSTNAME="tcms.rangee.com" # Ersetze dies mit dem gewünschten Hostnamen | ||
| 24 | # --------------------- | ||
| 25 | |||
| 26 | HOST_ENTRY="$TARGET_IP $HOSTNAME" | ||
| 27 | |||
| 28 | echo "Überwachung gestartet für $HOST_ENTRY... " >> $log_file | ||
| 29 | |||
| 30 | while true; do | ||
| 31 | # Ping senden (1 Paket, 2 Sekunden Timeout) | ||
| 32 | if ping -c 1 -W 2 "$TARGET_IP" > /dev/null 2>&1; then | ||
| 33 | # IP ist erreichbar -> Eintrag hinzufügen, falls noch nicht vorhanden | ||
| 34 | if ! grep -Fxq "$HOST_ENTRY" /etc/hosts; then | ||
| 35 | # Sicherstellen, dass die Datei mit einer neuen Zeile endet, bevor wir anhängen | ||
| 36 | if [ -n "$(tail -c1 /etc/hosts)" ]; then | ||
| 37 | echo "" >> /etc/hosts | ||
| 38 | fi | ||
| 39 | echo "$HOST_ENTRY" >> /etc/hosts | ||
| 40 | echo "[$(date '+%T')] IP erreichbar: Eintrag hinzugefügt." >> $log_file | ||
| 41 | fi | ||
| 42 | else | ||
| 43 | # IP ist NICHT erreichbar -> Eintrag entfernen, falls vorhanden | ||
| 44 | if grep -Fxq "$HOST_ENTRY" /etc/hosts; then | ||
| 45 | # Löscht genau die Zeile mit dem Eintrag aus /etc/hosts | ||
| 46 | sed -i "\|_MARKER_|!{/\<${TARGET_IP}\>.*\<${HOSTNAME}\>/d}" /etc/hosts 2>/dev/null || sed -i "/$TARGET_IP $HOSTNAME/d" /etc/hosts | ||
| 47 | echo "[$(date '+%T')] IP NICHT erreichbar: Eintrag entfernt." >> $log_file | ||
| 48 | fi | ||
| 49 | fi | ||
| 50 | |||
| 51 | # 5 Sekunden warten | ||
| 52 | sleep 5 | ||
| 53 | done}}} | ||
| 54 | ))) | ||
| 55 | * Automatischer Start: Aktiviert | ||
| 56 | * Desktop-Verknüpfung erstellen: Deaktiviert | ||
| 57 | * Verknüpfung im Startmenü erstellen: Deaktiviert | ||
| 58 | * Zeige Benachrichtigung beim Start: Deaktiviert | ||
| 59 | |||
| 60 | Hierdurch startet das Skript beim Gerätestart vollkommen unsichtbar und kümmert sich im Hintergrund um die Namensauflösung. |