40 lines
966 B
Bash
40 lines
966 B
Bash
#!/bin/sh
|
|
|
|
# In case the interface is used for nfs, skip it.
|
|
nfsroot=0
|
|
interfaces=""
|
|
exec 9<&0 < /proc/mounts
|
|
while read dev mtpt fstype rest; do
|
|
if test $mtpt = "/" ; then
|
|
case $fstype in
|
|
nfs | nfs4)
|
|
nfsroot=1
|
|
nfs_addr=`echo $rest | sed -e 's/^.*addr=\([0-9.]*\).*$/\1/'`
|
|
break
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
fi
|
|
done
|
|
exec 0<&9 9<&-
|
|
|
|
if [ $nfsroot -eq 0 ]; then
|
|
interfaces="$INTERFACES"
|
|
else
|
|
if [ -x /bin/ip -o -x /sbin/ip ] ; then
|
|
nfs_iface=`ip route get $nfs_addr | grep dev | sed -e 's/^.*dev \([-a-z0-9.]*\).*$/\1/'`
|
|
fi
|
|
for i in $INTERFACES; do
|
|
if test "x$i" = "x$nfs_iface"; then
|
|
echo "dhclient skipping nfsroot interface $i"
|
|
else
|
|
interfaces="$interfaces $i"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if test "x$interfaces" != "x"; then
|
|
/sbin/dhclient -d -cf /etc/dhcp/dhclient.conf -q -lf /var/lib/dhcp/dhclient.leases $interfaces
|
|
fi
|