X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=sbin%2Fnetcardconfig;h=ba8d7bf8e2dc5808ee2954f7f252c7359caa430a;hb=5a1079a5b15364c1d643269ae4bdb91db5408143;hp=e0b23d3b43f9347d56ef988eb47a86cd0ca2f7bf;hpb=8ca1b7528f447a55a82d666e2aeec39eb1fb07ca;p=grml-network.git diff --git a/sbin/netcardconfig b/sbin/netcardconfig index e0b23d3..ba8d7bf 100755 --- a/sbin/netcardconfig +++ b/sbin/netcardconfig @@ -4,7 +4,6 @@ # Authors: Michael Prokop , Marcel Wichern 2006, Klaus Knopper 2002, Niall Walsh + Stefan Lippers-Hollmann 2004-2007 # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Mit Mai 30 10:26:39 CEST 2007 [mika] ################################################################################ # Changes have been merged from Kanotix's and Sidux's netcardconfig: # http://kanotix.com/files/debian/pool/main/n/netcardconfig-kanotix/ @@ -16,7 +15,7 @@ LANGUAGE=C LANG=C export PATH LANGUAGE LANG . /etc/grml/script-functions -check4root +check4root || exit 1 TMP=$(mktemp) @@ -84,13 +83,18 @@ writeiwline() { generate_udev_entry() { interface='' + mkdir -p /etc/udev/scripts echo "# Auto generated script from netcardconfig on $(date) # Executing this script generates an entry in /etc/udev/rules.d/z25_persistent-net.rules # for you, please check z25_persistent-net.rules for existing entries before # running this script (once more)." > /etc/udev/scripts/netcardconfig for interface in `ifconfig | awk '/^[a-z]/ &&!/^lo/{ print $1} '` ; do echo -n "INTERFACE=$interface /lib/udev/write_net_rules " >> /etc/udev/scripts/netcardconfig && \ - udevinfo -a -p /sys/class/net/$interface | awk -F'==' '/address/ {print $2}' >> /etc/udev/scripts/netcardconfig + if which udevadm >/dev/null 2>&1; then + udevadm info -a -p /sys/class/net/$interface | awk -F'==' '/address/ {print $2}' >> /etc/udev/scripts/netcardconfig + else + udevinfo -a -p /sys/class/net/$interface | awk -F'==' '/address/ {print $2}' >> /etc/udev/scripts/netcardconfig + fi done # send errors to /dev/null as well because the sed line inside the /lib/udev/write_net_rules # script outputs a sed warning which might unsettle users @@ -152,6 +156,8 @@ configiface() { DEVICE=${NETDEVICES[$DV]} device2props DV=$DEVICENAME + ifdown $DV + sleep 3 # wireless config WLDEVICE="$(LANG=C LC_MESSAGEWS=C iwconfig $DV 2>/dev/null | awk '/802\.11|READY|ESSID/{print $1}')" WLDEVICECOUNT="$(LANG=C LC_MESSAGEWS=C iwconfig $DV 2>/dev/null | wc -l)" @@ -321,7 +327,13 @@ configiface() { } } ' /etc/network/interfaces) - $DIALOG --inputbox "$MESSAGEW23 $ESSID" 15 50 "$WPASECRET" 2>"$TMP" || bailout 1 + while [ -z "$WPASECRET" ] ; do + $DIALOG --inputbox "$MESSAGEW23 $ESSID" 15 50 "$WPASECRET" 2>"$TMP" || bailout 1 + read WPASECRET <"$TMP" + if [ -z "$WPASECRET" ] ; then + $DIALOG --msgbox "Sorry, empty password not allowed, please retry." 0 0 || bailout 1 + fi + done # make sure backslashes inside passphrase are handled correct WPASECRET=$(sed -e 's/\\/\\/g' "$TMP") && rm -r "$TMP" @@ -385,8 +397,8 @@ configiface() { /netmask/{if(found){netmask=$NF}} /broadcast/{if(found){broadcast=$NF}} /gateway/{if(found){gateway=$NF}} - /dns-nameservers/{if(found){dns-nameservers=$NF}} - END{print address" "netmask" "broadcast" "gateway" "dns-nameservers}' /etc/network/interfaces >"$TMP" + /dns-nameservers/{if(found){dnsnameservers=$NF}} + END{print address" "netmask" "broadcast" "gateway" "dnsnameservers}' /etc/network/interfaces >"$TMP" read IP NM BC DG <"$TMP" rm -f "$TMP" fi @@ -400,14 +412,14 @@ configiface() { $DIALOG --inputbox "$MESSAGE8 $DV" 10 45 "${BC:-${IP%.*}.255}" 2>"$TMP" || bailout 1 read BC <"$TMP" ; rm -f "$TMP" - $DIALOG --inputbox "$MESSAGE9" 10 45 "${DG:-${IP%.*}.254}" 2>"$TMP" + $DIALOG --inputbox "$MESSAGE9" 10 45 "${DG:-${IP%.*}.1}" 2>"$TMP" read DG <"$TMP" ; rm -f "$TMP" if [ -f "/etc/resolv.conf" ]; then NS="$(awk '/^nameserver/{printf "%s ",$2}' /etc/resolv.conf)" fi - $DIALOG --inputbox "$MESSAGE10" 10 45 "${NS:-${IP%.*}.254}" 2>"$TMP" + $DIALOG --inputbox "$MESSAGE10" 10 45 "${NS:-$DG}" 2>"$TMP" read NS <"$TMP" ; rm -f "$TMP" if [ -w /etc/network/interfaces ]; then @@ -477,9 +489,21 @@ MESSAGEW26=")? If you say no, your wep key will be stored in /etc/network/inte NETDEVICESCOUNT=0 -LAN=$(tail -n +3 /proc/net/dev|awk -F: '{print $1}'|sed "s/\s*//"|grep -v -e ^lo -e ^vmnet|sort) -[ -n "$WLAN" ] || WLAN=$(tail -n +3 /proc/net/wireless 2>/dev/null|awk -F: '{print $1}'|sort) +if [ -r /proc/net/dev ] ; then + LAN=$(tail -n +3 /proc/net/dev | awk -F: '{print $1}'| sed "s/\s*//" | grep -v -e ^lo -e ^vmnet | sort) +else + LAN="" +fi + +if [ -z "$WLAN" ] ; then + WLAN_OLD=$(tail -n +3 /proc/net/wireless 2>/dev/null|awk -F: '{print $1}') + # /proc/net/wireless does not work e.g. with iwl3945 on kernel 2.6.33 anymore + WLAN_NEW=$(for i in /sys/class/net/* ; do [ -d $i/wireless ] && basename $i ; done) + WLAN=$(echo $WLAN_OLD $WLAN_NEW | sort -u) +fi + unset LAN_DEVICES WLAN_DEVICES FIREWIRE_DEVICES NETDEVICES + while read dev mac; do #echo "Making NETDEVICES $NETDEVICESCOUNT $dev" iswlan=$(echo $dev $WLAN|tr ' ' '\n'|sort|uniq -d) @@ -556,8 +580,6 @@ while (true); do IFACEDONE="" while [ -n "$DV" -a -z "$IFACEDONE" ]; do configiface - ifdown $DV - sleep 3 if ! ifup $DV; then $DIALOG --yesno "$MESSAGE14" 15 50 || IFACEDONE="DONE" else