#!/bin/sh set -eu IP=$(ifconfig wan0 | awk '/inet / {print $2}' | head -n1) HOSTNAME=$(hostname) CONFFILE=/etc/dhclient.conf NEWFILE=$(mktemp) if [ -f "${CONFFILE}" ]; then OLDHASH=$(md5 -q "${CONFFILE}") else OLDHASH="doesnotexist" fi cat < "${NEWFILE}" # This file is generated by $0 periodically. # Changes will be overwritten. interface "wan0" { send host-name "${HOSTNAME}"; EOF if [ ! -z "$IP" ]; then cat <> "${NEWFILE}" send dhcp-requested-address $IP; EOF fi echo "}" >> "${NEWFILE}" mv "${NEWFILE}" "${CONFFILE}" # If changed, restart dhclient wan0 md5 -c "${OLDHASH}" "${CONFFILE}" 1>/dev/null 2>/dev/null if [ ! "$?" = 0 ]; then echo "Generated ${CONFFILE} has changed, restarting dhclient on wan0 (IP: ${IP})" service dhclient restart wan0 fi