Ping und Http über Netbios Name

devrandom

devrandom

Aktives Mitglied
Thread Starter
Dabei seit
29.12.2009
Beiträge
2.685
Reaktionspunkte
262
Abend,

ich habe einen Linux-Server auf dem ein Samba-Server mit WINS-Server läuft. Dadurch taucht dieser auch im Finder in der Seitenleiste auf und auf die Freigaben lässt sich ohne Probleme zugreifen.
Nun würde ich gerne den Netbios-Namen auch für ping-Aufrufe und Zugriffe über den Browser nutzen. Wie mache ich denn das am besten? Eingebaut scheint das nicht zu sein. Über smbutil kann ich wenigstens die IP-Adresse herausfinden. Kann ich die irgendwo skriptgesteuert (cron-job) irgendwo eintragen?

Danke im Voraus
 
/etc/hosts pflegen.
Ist aber doof wenn sich die IP mal ändert.
 
Oder per Remote die lmhosts vom Windowsserver auslesen. Dort müsste die Namensauflösung hinterlegt sein, wenn ich mich nicht irre. Im Zweifel eben die Ausgabe von smbutil mit ein paar Pipes und grep malträtieren und die Ausgabe in eine Datei weiterleiten.
 
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
Code:
  ./etc/lookup_server.sh
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:
Code:
ping ubuntuserver
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
 
Aha.
Und wozu ist das dann gut? :kopfkratz:
Erscheint mir irgendwie als "Overkill"...
 
Na, steht doch oben. Verwendung des Netbios-Namens meines Sambaservers für Zugriff per Ping und Http. Wenn sich die IP des Servers dauernd ändert, muss ich so nicht ständig manuell die hosts-Datei pflegen.
 
Zurück
Oben Unten