next up previous index
Next: wins proxy S Up: Die Parameter Previous: winbind use default domain   Index


wins hook G 2.0.6

Wenn der Sambas als WINS-Server konfiguriert ist, so erlaubt die Belegung dieses Parameters, ein externes Programm aufzurufen, sobald sich die Einträge der Samba-WINS-Datenbasis verändern. Dadurch kann ein flexibler und vor allem dynamischer Datenabgleich mit dem DNS durchgeführt werden. (siehe auch Glossar DNSdns)

Bis zur Vorgängerversion musste der Sambas angehalten werden, wenn ein neuer Client dem LAN-Netz hinzugefügt wurde. Mit dieser Option kann der neue Client dem DNS-Server zur Laufzeit bekannt gemacht werden.

Der wins hook-Parameter kann mit einem Skript-Namen belegt werden, dessen Eingabeparameter wie folgt strukturiert werden müssen:

wins_hook <operation> <name> <nametype> <ttl> <IP_list>

Im folgenden wird beschrieben, wie die Parameter belegt werden können und welche Bedeutung sie haben:

Voreinstellung:

keine

Beispiel:

wins hook = nsupdate.sh

Das in 1.21 angegebene Beispiel stammt von Stephen Rothwell und kann im Directory examples der Samba-Quellen nachgeschlagen werden. Ich habe die Kommentare von Stephen ins Deutsche übertragen, sonst an dem Beispiel aber nichts verändert. Das Beispiel ist nicht sehr kompliziert und verdeutlicht, wie die Belegung des Parameters wins hook mit dem Skript nsupdate.sh funktioniert.


\begin{beispiel}{Ein {Skript} für \texttt{wins hook}}
\end{beispiel}

#!/bin/sh #
# Beispiel-Skript fuer wins hook. Das Skript versucht
# den DNS mit einem neuen Eintrag des von Samba uebergebenen
# NetBIOS-Namen zu aktualisieren. Das wird bewerkstelligt
# durch das Loeschen aller Eintraege im DNS, welche diesem
# NetBIOS-Namen entsprechen, und das darauffolgende Eintragen
# aller sogenannter 'A'-Records.
#
# Autor: Stephen Rothwell <sfr@linuxcare.com>
#
#
# Konfigurierbare Einträge
#
# Hier wird die Domain angegeben, in der die Namen erzeugt
# werden.
#
# DIESER EINTRAG MUSS GEAENDERT WERDEN, UND ZWAR
# EINSCHLIESSLICH DES LETZTEN PUNKTES
#
# Es ist ratsam, eine Subdomain der Primary-Domain zu
# verwenden, um sicherzustellen, dass boeswillige Clients
# keine Namen existierender Maschinen verwenden oder
# loeschen koennen.
#
DOMAIN=wins.example.com.

#
# Hier wird der Parameter time to live des Namens in der
# DNS angegeben (in Sekunden)
#
TTL=3600
#
# NETBIOS-Name-Typen fuer die wir DNS Eintraege erzeugen
# wollen:
#       20 ist der server
#       00 ist die workstation
#       03 ist der user
#
USEFUL_TYPES=20 00 03
#
# Hier kann ein Cache angegeben werden, um zu verhindern,
# dass die gleichen Namen und IP-Adressen immer wieder
# aktualisiert werden. Falls diese Variable auskommentiert
# wird, wird kein Cache angelegt.
#
#CACHE_FILE=/usr/local/samba/var/wins_update.cache
 
if [ $# -lt 4 ]; then
        echo Usage: $0 op name type ttl [ip_addr ...] 1>&2
        echo op ist vom Typadd, refresh, delete 1>&2
        echo name ist der NETBIOS Name 1>&2
        echo type ist der NETBIOS Namenstype 1>&2
        echo ttl ist die NETBIOS Zeit to live 1>&2
        echo ip_addr die IP-Adressen fuer diesen Namen 1>&2
        exit 1
fi
 
NSUPDATE=`which nsupdate`
[ -x $NSUPDATE ] || NSUPDATE=/usr/bin/nsupdate
[ -x $NSUPDATE ] || NSUPDATE=/sbin/nsupdate
[ -x $NSUPDATE ] || NSUPDATE=/usr/sbin/nsupdate
[ -x $NSUPDATE ] ||
        echo nsupdate kann nicht gefunden werden 1>&2
        exit 1

 
OP=$1
NAME=$2
TYPE=$3
WINS_TTL=$4
shift 4
IP_ADDRS=$@
 
do_update=0
for i in $USEFUL_TYPES
do
        [ $TYPE = $i ] && do_update=1
done
[ $do_update = 1 ] || exit 0
 
if [ -n $CACHE_FILE ]; then
        if [ -r $CACHE_FILE ]; then
               fgrep -q -x -i $NAME $IP_ADDRS $CACHE_FILE &&
                      exit 0
               grep -v -i ^$NAME $CACHE_FILE >$CACHE_FILE.$$
        fi
        echo $NAME $IP_ADDRS >>$CACHE_FILE.$$
        mv $CACHE_FILE $CACHE_FILE.old 2>/dev/null
        mv $CACHE_FILE.$$ $CACHE_FILE
fi
 

        echo update delete $NAME.$DOMAIN
        for i in $IP_ADDRS
        do
               echo update add $NAME.$DOMAIN $TTL A $i
        done
        echo
2>/dev/null | $NSUPDATE >/dev/null 2>&1 &
 
exit 0


next up previous index
Next: wins proxy S Up: Die Parameter Previous: winbind use default domain   Index
millin Verlag