On Fri, Apr 30, 2004 at 06:25:35PM +0100, Piers Kittel wrote: | 2) Is there a way for the laptop to detect if the wired cable is | unplugged then it'd bypass or "disable" the eth0 interface at bootup so | preventing the dhcp client trying to find an IP via eth0? I don't know the ideal solution to your other question, but I do know the answer to this one! --- /etc/network/interfaces auto eth0 iface eth0 inet dhcp # only try DHCP if there is a physical link pre-up /usr/local/sbin/check-link.sh eth0 --- /usr/local/sbin/check-link.sh #!/bin/sh # check-link.sh # tests interface for link # # Usage: check-link.sh INTERFACE # # Greg Wiley # greg@orthogony.com # # Script is meant for use with the ifupdown # program as a pre-up command. It returns # success if the given interface has a link. # Created to avoid the laptop boot delay # caused by trying to DHCP an unconnected # interface. # # Currently uses MII to check link status. # This might not be universal since not all # NICs use MII. It should work for a large # number of ethernet NICs, though # # History: # 11/15/2001 gjwiley create # 11/16/2001 gjwiley add syntax checking, support # prog checking, comments, etc. # for publish # TODO: # - if useful, add support for non-ether, # non-mii xfcs iface="$1" # what to grep to determine no link MIINACK='no link' # where is ifconfig? IFCTOOL='/sbin/ifconfig' IFCCMD="eval ( ${IFCTOOL} ${iface} > /dev/null 2>&1 )" # the mii link checking program MIITOOL='/sbin/mii-tool' MIICMD="${MIITOOL} ${iface}" # some systems don't use egrep GREPTOOL='/bin/egrep' GREPMIICMD="eval ${GREPTOOL} -q '${MIINACK}'" #default to internal error return rval='3'; if [ -f ${MIITOOL} -a -f ${GREPTOOL} -a -f ${IFCTOOL} ]; then if [ -x ${MIITOOL} -a -x ${GREPTOOL} -a -x ${IFCTOOL} ]; then if [ "x${iface}" != "x" ]; then if ${IFCCMD}; then if ( ${MIICMD} | ${GREPMIICMD} ); then rval='1' else rval='0' fi else echo "${0}: invalid interface" >&2 rval='2' fi else echo "${0}: interface not specified" >&2 rval='2' fi else echo "${0}: required program not executable." >&2 fi else echo "${0}: required program not found." >&2 fi exit ${rval} As the comments indicate, I didn't come up with this. I found it on the 'net when someone on d-u pointed it out. The only downside is ifupdown puts an entry in the state file even when it doesn't bring up the interface. Therefore after you plug a cable in, you either need to run ifup with the '--force' parameter or run 'ifdown' before running ifup. -D -- Yes, Java is so bulletproofed that to a C programmer it feels like being in a straightjacket, but it's a really comfy and warm straightjacket, and the world would be a safer place if everyone was straightjacketed most of the time. -- Mark 'Kamikaze' Hughes www: http://dman13.dyndns.org/~dman/ jabber: dman@dman13.dyndns.org
Attachment:
signature.asc
Description: Digital signature