Date: Wed, 3 May 2006 20:55:48 -0400 From: "fbsd" <fbsd@a1poweruser.com> To: "Murray Taylor" <MTaylor@bytecraft.com.au> Cc: freebsd-questions <freebsd-questions@freebsd.org> Subject: RE: Getting DHCP to use resolv.conf? AN ANSWER Message-ID: <MIEPLLIBMLEEABPDBIEGAECBHGAA.fbsd@a1poweruser.com> In-Reply-To: <04E232FDCD9FBE43857F7066CAD3C0F117C83E@svmailmel.bytecraft.internal>
next in thread | previous in thread | raw e-mail | index | archive | help
> > > -----Original Message----- > From: owner-freebsd-questions@freebsd.org > [mailto:owner-freebsd-questions@freebsd.org]On Behalf Of Murray Taylor > Sent: Sunday, April 30, 2006 7:56 PM > To: Lowell Gilbert > Cc: freebsd-questions@freebsd.org > Subject: RE: Getting DHCP to use resolv.conf? AN ANSWER > > > Murray. > > Using your scripts as a example I coded the following script. > I can not get the notification logger and email to function. > I am running postfix launched by the sendmail wrappers on a > FreeBSD 6.0 system. > I am also using the built in dhclient that comes with the > base install. > Could you post the isc_dhclient-script so I can compare it to > the one that comes with the base install for differences that > may cause this behavior? > Any other help would be appreciated. > > > When this script runs the logger statements do not create any > message in the targeted log files. > IF I execute the same logger statements from the command line > they work as expected. > This is the boot time messages with mail code commented out. > > dc0: link state changed to DOWN > dc0: no link ....dc0: link state changed to UP got link > dc0: link state changed to DOWN > DHCPREQUEST on dc0 to 255.255.255.255 port 67 > dc0: link state changed to UP > DHCPACK from 10.0.10.2 > dc0: link state changed to DOWN > bound to 10.0.10.4 -- renewal in 43200 seconds. > > > IF I execute the cat command to issue the notification email > from the command line it works fine, but when used in the > script I get these messages during boot process. > > "~/.mailrc": No match. > DHCPREQUEST on dc0 to 255.255.255.255 port 67 > /libexec/ld-elf.so.1: Shared object "libpcre.so.0" not found, > required by "send-mail" > dc0: link state changed to UP > DHCPREQUEST on dc0 to 255.255.255.255 port 67 DHCPACK from 10.0.10.2 > dc0: link state changed to DOWN > bound to 10.0.10.4 -- renewal in 43200 seconds. > > > > > #!/bin/sh > > ############# Start of refresh dhcpd dns ip script > ############# # This script will propagate to dhcpd the > changed dns servers ip # address which dhcp-client puts in > resolv.conf. > # > # In dhcpd.conf replace the "option domain-name-servers" line > with this # # include "/etc/dhcpd.name-servers"; # # Script > uses the dhcpc variables to build temp line in dhcpd format. > # Then compare temp content to production content. > # If different replace production content with new content > from temp # and restart dhcp to reread dhcpd.conf containing > new ISP dns ip addresses. > # > # logging event and sending email to user root is optional. > # > # Note: All LAN machines using dhcpd will not get new ISP dns > ip # addresses until they reboot or their lease comes up for renewal. > # > # Each of the following lines must be one long line. IE: no > wrap around > #################################################################### > > # load my_domain_name_servers variable with ISP dns ip > addresses from dhcpc my_domain_name_servers=`echo > $new_domain_name_servers | sed -e 's/ /, /g'` > > # Create single line in file to be included in dhcpd.conf > echo "option domain-name-servers $my_domain_name_servers ;" > > /etc/dhcpd.name-servers.tmp > > # See if different from what production file contains cmp -s > /etc/dhcpd.name-servers.tmp /etc/dhcpd.name-servers if [ $? > -gt 0 ]; then > # move the new file into place > mv /etc/dhcpd.name-servers.tmp /etc/dhcpd.name-servers > # restart dhcp using whatever is appropriate for your platform > #service dhcpd restart > #/usr/local/etc/rc.d/isc-dhcpd.sh restart -q > # Write message to /var/log/dhcpc.log to document event. > logger -p user.warning -t dhclient Your ISP DNS IP > addresses changed. > # Write message to /var/log/dhcpd.log to document event. > logger -p local1.warning -t dhclient Your ISP DNS IP > addresses changed. > > # Send notification email to root user. This can wrap to next line. > # cat << EOF | mail -s "dhcp client changed ISP DNS IP addresses" > root > #The dhclient-exit-hook script was invoked and has determined > that your #ISP changed the IP address of their DNS servers. > The new values have been #auto updated to dhcpd.conf and dhcp > restarted so they are now in effect. > # > #Note: All LAN machines using dhcpd will not start using the > new ISP dns #ip addresses until they reboot or their lease > comes up for renewal. > #EOF > fi > rm -f /etc/dhcpd.name-servers.tmp > ############### End of refresh dhcpd dns ip script > ################### The script I sent are operational on FBSD 4.11 with the enter/exit-hooks scripts that are part of the base install. NB Dont forget I run the ipf firewall rewrite rules script manually as root when my IP number changes, but the DHCP -> resolv.conf is automatic via exit-hooks The scripts are always called by dhclient, what I put in them is what I attached. And I am also using Postfix ... As far as I remenber pcre is only needed by Postfix if you use pcre:<check-file> regular expression type files in main.cf. If you use regexp:<check-file> then pcre is not used. Murray Taylor --------------------------------------------------------------- Murry The only difference between us is I am running FreeBSD 6.0. & you 4.11. I had another exit-hooks script that worked fine when I was running all the versions in 4.x series. Currents tests show that even the IF statement in the script does not work either. I think this is turning into looking like a bug in the 6.0 release. I jumped from 4.11 to 6.0 doing a fresh install. Problem may have been in 5.x series also. I believe the recorder directives were added to the /etc/rc.d boot process as part of version 5.0 development series and the build in dhclient boot process was over looked so it no longer is getting executed at the time when all the resources it needs are active yet.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?MIEPLLIBMLEEABPDBIEGAECBHGAA.fbsd>