So, heute hab ich mich mal dran gesetzt und folgende Lösung erarbeitet. Funktioniert bei mir einwandfrei, für Kritik und Verbesserungsvorschläge bin ich aber offen...
Hinweis1 Der Server hat bei mir den Netbios-Namen ubuntuserver, sollte dieser also anders sein, so muss die Zeichenkette ubuntuserver im Folgenden durch den entsprechenden Namen ersetzt werden.
Hinweis2 Mit der folgenden Vorgehensweise kann man sich das System schrotten, weshalb man wissen sollte, was man tut. Gewähr übernehme ich keine.
Folgendes Shell-Skript sucht die aktuelle IP des Servers heraus und trägt sie in die /etc/hosts-Datei ein:
Code:
#!/bin/sh
HOSTNAME="ubuntuserver"
# retreive IP for the hostname
SERVER=`echo $HOSTNAME | tr "[a-z]" "[A-Z]"` # Convert argument to all upper-case.
LOOKUP_RESULT=`smbutil lookup $SERVER | grep Got` # Get the first line from smbutil output.
if [ "$LOOKUP_RESULT" = "" ]; then
# did not find the ip
echo "did not find ip"
else
IP=`expr "$LOOKUP_RESULT" : '..................\(.*\)'` # Extract IP.
echo "found ip $IP"
OLD_ENTRY=`grep $HOSTNAME /etc/hosts`
OLD_IP=`expr "$OLD_ENTRY" : '\([^ ]*\)'`
# only update if ip in hosts file if it actually changed
if [ ! "$IP" = "$OLD_IP" ]; then
# replace entry in hosts file with new ip and write to temporary file
sed "s/.*$HOSTNAME/$IP $HOSTNAME/g" /etc/hosts > /etc/hosts.tmp
# replace hosts file with temporary file
mv /etc/hosts.tmp /etc/hosts
# reload dns cache
dscacheutil -flushcache
fi
fi
Diese Datei als lookup_server.sh speichern, z.B. im Home-Verzeichnis.
Die folgenden Befehle sind alle als root (sudo su) auszuführen:
Skript verschieben, dem root-Account übertragen und für sonstige Benutzer nur Lesezugriff gewähren
Code:
mv /Users/stefan/lookup_server.sh /etc/lookup_server.sh
chown root /etc/lookup_server.sh
chmod 744 /etc/lookup_server.sh
Die Zeichenkette stefan entsprechend ersetzen.
Backup von hosts-Datei anlegen (für alle Fälle)
Code:
cp /etc/hosts /etc/hosts.bak
Eintrag für Server in hosts-Datei anlegen
Code:
echo "1.2.3.4 ubuntuserver" >> /etc/hosts
Achtung: ubuntuserver durch den Netbios-Namen des Servers ersetzen
die IP dagegen ist egal, wird vom Skript dann eh korrigiert
Crontab-Eintrag anlegen
Code:
echo "*\t*\t*\t*\t*\troot\tsh /etc/lookup_server.sh\n" >> /etc/crontab
Damit wird das Skript jede Minute ausgeführt, näheres findet sich in der Dokumentation zu crontab
Skript einmal ausführen
Der Server sollte nun über seinen Netbios-Namen auch per Webbrowser/Ping... erreichbar sein, der Cronjob läuft ab dem nächsten Neustart. Testweise kann man einen Ping durchführen:
Dies sollte eine Ausgabe wie folgt erzeugen:
Code:
PING ubuntuserver (192.168.1.107): 56 data bytes
64 bytes from 192.168.1.107: icmp_seq=0 ttl=64 time=2.493 ms
64 bytes from 192.168.1.107: icmp_seq=1 ttl=64 time=2.387 ms
64 bytes from 192.168.1.107: icmp_seq=2 ttl=64 time=2.376 ms
64 bytes from 192.168.1.107: icmp_seq=3 ttl=64 time=25.031 ms
64 bytes from 192.168.1.107: icmp_seq=4 ttl=64 time=3.125 ms