RangeeOS - Namensauflösung bei Netzwerkverfügbarkeit (Host Datei editieren)

Version 1.1 von Tobias Wintrich am 2026/09/24 10:04

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.

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.

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.

Skript einrichten

Das Skript kann über Werkzeuge -> Skripte -> Neue Verbindung konfiguriert angelegt werden. Es müssen folgende Optionen gesetzt sein:

  • Name: Frei wählbar
  • Als root ausführen: Aktiviert
  • Skript: 

    "TARGET_IP" und "HOSTNAME" müssen noch entsprechend angepasst werden

    # --- KONFIGURATION ---
    TARGET_IP="192.168.222.254"      # Ersetze dies mit der gewünschten IP
    HOSTNAME="tcms.rangee.com"       # Ersetze dies mit dem gewünschten Hostnamen
    # ---------------------
    
    HOST_ENTRY="$TARGET_IP $HOSTNAME"
    
    echo "Überwachung gestartet für $HOST_ENTRY... "  >> $log_file
    
    while true; do
        # Ping senden (1 Paket, 2 Sekunden Timeout)
        if ping -c 1 -W 2 "$TARGET_IP" > /dev/null 2>&1; then
            # IP ist erreichbar -> Eintrag hinzufügen, falls noch nicht vorhanden
            if ! grep -Fxq "$HOST_ENTRY" /etc/hosts; then
                    # Sicherstellen, dass die Datei mit einer neuen Zeile endet, bevor wir anhängen
                if [ -n "$(tail -c1 /etc/hosts)" ]; then
                    echo "" >> /etc/hosts
                fi
                echo "$HOST_ENTRY" >> /etc/hosts
                echo "[$(date '+%T')] IP erreichbar: Eintrag hinzugefügt." >> $log_file
            fi
        else
            # IP ist NICHT erreichbar -> Eintrag entfernen, falls vorhanden
            if grep -Fxq "$HOST_ENTRY" /etc/hosts; then
                # Löscht genau die Zeile mit dem Eintrag aus /etc/hosts
                sed -i "\|_MARKER_|!{/\<${TARGET_IP}\>.*\<${HOSTNAME}\>/d}" /etc/hosts 2>/dev/null || sed -i "/$TARGET_IP $HOSTNAME/d" /etc/hosts
                echo "[$(date '+%T')] IP NICHT erreichbar: Eintrag entfernt."  >> $log_file
            fi
        fi
        
        # 5 Sekunden warten
        sleep 5
    done
  • Automatischer Start: Aktiviert
  • Desktop-Verknüpfung erstellen: Deaktiviert
  • Verknüpfung im Startmenü erstellen: Deaktiviert
  • Zeige Benachrichtigung beim Start: Deaktiviert

Hierdurch startet das Skript beim Gerätestart vollkommen unsichtbar und kümmert sich im Hintergrund um die Namensauflösung.