RangeeOS - Namensauflösung bei Netzwerkverfügbarkeit (Host Datei editieren)
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:
# --- 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.