[Samba] dns_update problems

Jeff Nichols jeff at greenvalleyschool.com
Tue Jul 9 10:48:35 GMT 2002


Hi,

    I was wondering if anyone else has had this problem. The dns_update script in the examples directory doesnt work. When I try to run it from the shell, I get this error: "bash ./dns_update: No such file or directory", and it IS in the current directory and has 755 for permissions. Its just the script straight out of the examples dir, with only the domian changed.

#!/bin/sh
#
# Example script for "wins hook".  This attempts to update the DNS with
# new A records for the NETBIOS name that Samba passes us. We do this
# the simple way, by deleting all DNS records for the name and then
# readding all the expected 'A' records.
#
# Written by Stephen Rothwell <sfr at linuxcare.com>
#

#
# Configurable things
#
# The domain in which to create names
#   YOU MUST CHANGE THIS
# N.B. include the trailing dot
#
# It is a good idea to use a subdomain of your primary domain to ensure
# that rogue machines can't take over (or delete) important names on
# your network.
DOMAIN=comp.gvs.

#
# The DNS TTL to give the records (in seconds)
#
TTL=3600
#
# NETBIOS name types that we want to create DNS records for:
# 20 is server
# 00 is workstation
# 03 is user
#
USEFUL_TYPES="20 00 03"
#
# The name of a cache file to use to avoid continual updates
# of the same name and IP addresses.  If you comment this out
# then the cache is not kept at all.
#
#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 is one of add, refresh, delete" 1>&2
 echo "       name is the NETBIOS name" 1>&2
 echo "       type is the NETBIOS name type" 1>&2
 echo "       ttl is the NETBIOS time to live" 1>&2
 echo "       ip_addr's are the remaining IP addresses for this name" 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 "Cannot find nsupdate." 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 part --------------
HTML attachment scrubbed and removed


More information about the samba mailing list