TT#82852 Drop netcardconfig, use upstream one from Grml

Initially wanted to sync with https://github.com/grml/grml-network/ as
of commit 49409a5587d, though templates/scripts/includes/netcardconfig
existed only to provide the VLAN patch until we had this available from
upstream and our own ISO. Now that everything has been upstreamed and we
have up2date Grml ISOs, let's switch to the one included in upstream
Grml.

Change-Id: I685cd0ad95033ad2b50036e53c2ee9814a776e63
changes/10/40610/4
Michael Prokop 5 years ago
parent be5432ab18
commit 97ee200fd4

@ -1749,7 +1749,7 @@ EOT
# Check the current method of external interface
# If it is manual - we need to reconfigure /e/n/i to get working network configuration after the reboot
method=$( sed -rn "s/^iface ${INSTALL_DEV} inet ([A-Za-z]+)/\1/p" < /etc/network/interfaces )
netcardconf="${TARGET}/usr/share/ngcp-deployment-scripts/includes/netcardconfig"
netcardconf="/usr/sbin/netcardconfig"
if [[ "${method}" == 'manual' ]]; then
if "${DHCP}" ; then
NET_DEV="${INSTALL_DEV}" METHOD='dhcp' "${netcardconf}"

@ -1,735 +0,0 @@
#!/bin/bash
# Filename: grml-network
# Purpose: configuration script for network
# Authors: Michael Prokop <mika@grml.org>, 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.
################################################################################
# Changes have been merged from Kanotix's and Sidux's netcardconfig:
# http://kanotix.com/files/debian/pool/main/n/netcardconfig-kanotix/
# http://svn.berlios.de/wsvn/fullstory/configure-networkcard/trunk/
################################################################################
PATH="/bin:/sbin:/usr/bin:/usr/sbin"
LANGUAGE=C LANG=C
export PATH LANGUAGE LANG
. /etc/grml/script-functions
check4root || exit 1
TMP=$(mktemp)
bailout() {
rm -f "$TMP"
exit "${1:-0}"
}
# This function produces the IWOURLINE for interfaces
writeiwline() {
IWOURLINE=""
if [ -n "$NWID" ]; then
IWOURLINE="$IWOURLINE wireless-nwid $NWID\n"
fi
if [ -n "$MODE" ]; then
IWOURLINE="$IWOURLINE wireless-mode $MODE\n"
fi
if [ -n "$CHANNEL" ]; then
IWOURLINE="$IWOURLINE wireless-channel $CHANNEL\n"
fi
if [ -n "$FREQ" ]; then
IWOURLINE="$IWOURLINE wireless-freq $FREQ\n"
fi
if [ -n "$KEY" ]; then
if [ "$PUBKEY" -eq 1 ]; then
# Store the key in interfaces in wireless-key
IWOURLINE="$IWOURLINE wireless-key $KEY\n"
else
# Store the key in /etc/network/wep.$DV which is root readable only
# Use pre-up in interfaces to read and set it
echo "$KEY" > "/etc/network/wep.$DV" && chmod 600 "/etc/network/wep.$DV" && IWOURLINE="$IWOURLINE pre-up KEY=\$(cat /etc/network/wep.$DV) && iwconfig $DV key \$KEY\n"
fi
fi
for mod in /sys/module/rt2??0/ ; do
if [ -d "$mod" ]; then
IWPREUPLINE="$IWPREUPLINE pre-up /sbin/ip link set $DV up\n"
break
fi
done
if [ -n "$IWCONFIG" ]; then
IWPREUPLINE="$IWPREUPLINE iwconfig $IWCONFIG\n"
fi
if [ -n "$IWSPY" ]; then
IWPREUPLINE="$IWPREUPLINE iwspy $IWSPY\n"
fi
if [ -n "$IWPRIV" ]; then
IWPREUPLINE="$IWPREUPLINE iwpriv $IWPRIV\n"
fi
# execute ESSID last, but make sure that it is written as first option
if [ -n "$ESSID" ]; then
IWOURLINE="$IWOURLINE wireless-essid $ESSID\n"
fi
if [ "$WPAON" -gt 0 ]; then
IWOURLINE="$IWOURLINE wpa-ssid $ESSID\n wpa-psk $WPASECRET\n"
fi
IWOURLINE="$IWOURLINE $IWPREUPLINE"
#echo "DEBUG: for interfaces $IWOURLINE"
}
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 $(ip -oneline link | awk '!/ lo: / {print $2}' | sed 's/:$//; s/@.*//') ; do
echo -n "INTERFACE=$interface /lib/udev/write_net_rules " >> /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
chmod +x /etc/udev/scripts/netcardconfig && /etc/udev/scripts/netcardconfig 1>/dev/null 2>&1
}
disable_config_dhcp() {
if grep -q CONFIG_DHCP /etc/grml/autoconfig ; then
sed -i "s|^CONFIG_DHCP.*|CONFIG_DHCP='no'|" /etc/grml/autoconfig
fi
}
device2props() {
PARTCOUNT=0
isauto=0
isfirewire=0
iswireless=0
driver=""
mac=""
for PART in $DEVICE; do
if [ $PARTCOUNT -eq 0 ]; then
DEVICENAME=$PART
else
echo "$PART" | grep -q A::1 && isauto=1
echo "$PART" | grep -q F::1 && isfirewire=1
echo "$PART" | grep -q W::1 && iswireless=1
[ -z "$driver" ] && driver=$(echo "$PART"|awk 'BEGIN {FS="::"} /^D:/{print $2}')
[ -z "$mac" ] && mac=$(echo "$PART"|awk 'BEGIN {FS="::"} /^M:/{print $2}')
fi
((PARTCOUNT++))
done
}
props2string() {
MY_DEVICE_NAME=""
[ $isfirewire -gt 0 ] && MY_DEVICE_NAME="$NET_DEVICE_NAME_FW"
[ -z "$MY_DEVICE_NAME" ] && [ $iswireless -gt 0 ] && MY_DEVICE_NAME="$NET_DEVICE_NAME_W"
[ -z "$MY_DEVICE_NAME" ] && MY_DEVICE_NAME="$NET_DEVICE_NAME"
MY_DEVICE_NAME="$DEVICENAME $MY_DEVICE_NAME $mac $driver"
[ $isauto -gt 0 ] && MY_DEVICE_NAME="$MY_DEVICE_NAME $NET_DEVICE_NAME_AUTO"
MY_DEVICE_NAME="${MY_DEVICE_NAME// /__}"
}
addauto() {
if ! grep -E "^auto .*$DV" /etc/network/interfaces >/dev/null; then
awk '{if(/^auto/){if(done==0){print $0 " '"$DV"'";done=1}else{print}}else{print}}END{if(done==0){print "auto '"$DV"'"}}' "/etc/network/interfaces" > "$TMP"
cat "$TMP" > /etc/network/interfaces
fi
}
remauto(){
if grep -e "^auto .*$DV" /etc/network/interfaces >/dev/null; then
perl -pi -e 's/^(auto.*)'"$DV"'(.*)$/$1$2/;' /etc/network/interfaces
fi
}
scanwlan(){
i=0
ip link set "$DV" up
iwlist "$DV" scanning | grep "ESSID\|Quality" | sed -e "s/^.*ESSID:\"\|\"$//g" | tac > "$TMP"
while read -r line
do
WARRAY[i++]=$line
done < "$TMP"
unset i
rm -f "$TMP"
}
configiface() {
local METHOD
METHOD="${1,,}"
if [[ -n "${METHOD}" ]] && [[ "${METHOD}" != 'dhcp' ]]; then
local IP
IP="${2}"
local NM
NM="${3}"
local DG
DG="${4}"
local NS
NS="${5}"
local BC
BC="${IP%.*}.255"
fi
[ ! -r /etc/network/interfaces ] && touch /etc/network/interfaces
DEVICE=${NETDEVICES[$DV]}
device2props
DV=$DEVICENAME
ifdown "${DV}" --force
sleep 3
# wireless config
WLDEVICECOUNT="$(LANG=C LC_MESSAGEWS=C iwconfig "$DV" 2>/dev/null | wc -l)"
if "${INTERACTIVE}" ; then
if [ $iswireless -gt 0 ] && $DIALOG --yesno "$MESSAGE13" 8 45; then
ESSID=""
NWID=""
MODE=""
CHANNEL=""
FREQ=""
SENS=""
RATE=""
KEY=""
RTS=""
FRAG=""
IWCONFIG=""
IWSPY=""
IWPRIV=""
if [ -f /etc/network/interfaces ]; then
awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}}
/essid/{if(found){for(i=NF;i>=2;i--)essid=$i "~" essid}}
/nwid/{if(found){nwid=$NF}}
/mode/{if(found){mode=$NF}}
/channel/{if(found){channel=$NF}}
/freq/{if(found){freq=$NF}}
/sens/{if(found){sens=$NF}}
/rate/{if(found){rate=$NF}}
/rts/{if(found){rts=$NF}}
/frag/{if(found){frag=$NF}}
/iwconfig/{if(!/KEY/){if(found){iwconfig=$NF}}}
/iwspy/{if(found){iwspy=$NF}}
/iwpriv/{if(found){iwpriv=$NF}}
/wireless[-_]key/{if(found){gsub(/^\W*wireless[-_]key\W*/,"");key=$0}}
END{
if (!(length(essid))){essid="~~~"}
if (!(length(nwid))){nwid="~~~"}
if (!(length(mode))){mode="~~~"}
if (!(length(channel))){channel="~~~"}
if (!(length(freq))){freq="~~~"}
if (!(length(sens))){sens="~~~"}
if (!(length(rate))){rate="~~~"}
if (!(length(rts))){rts="~~~"}
if (!(length(frag))){frag="~~~"}
if (!(length(iwconfig))){iwconfig="~~~"}
if (!(length(iwspy))){iwspy="~~~"}
if (!(length(iwpriv))){iwpriv="~~~"}
if (!(length(key))){key="~~~"}
print essid" "nwid" "mode" "channel" "freq" "sens" "rate" "rts" "frag" "iwconfig" "iwspy" "iwpriv" "key
}' /etc/network/interfaces >"$TMP"
read -r ESSID NWID MODE CHANNEL FREQ SENS RATE RTS FRAG IWCONFIG IWSPY IWPRIV KEY<"$TMP"
[[ "$ESSID" =~ ^~~~$ ]] && ESSID=""
[[ "$NWID" =~ ^~~~$ ]] && NWID=""
[[ "$MODE" =~ ^~~~$ ]] && MODE=""
[[ "$CHANNEL" =~ ^~~~$ ]] && CHANNEL=""
[[ "$FREQ" =~ ^~~~$ ]] && FREQ=""
[[ "$SENS" =~ ^~~~$ ]] && SENS=""
[[ "$RATE" =~ ^~~~$ ]] && RATE=""
[[ "$RTS" =~ ^~~~$ ]] && RTS=""
[[ "$FRAG" =~ ^~~~$ ]] && FRAG=""
[[ "$IWCONFIG" =~ ^~~~$ ]] && IWCONFIG=""
[[ "$IWSPY" =~ ^~~~$ ]] && IWSPY=""
[[ "$IWPRIV" =~ ^~~~$ ]] && IWPRIV=""
[[ "$KEY" =~ ^~~~$ ]] && KEY=""
# shellcheck disable=SC2088
ESSID=$(echo $ESSID | tr '~' " " | sed 's/ *$//')
if [ -z "$KEY" ]; then
KEY=$(cat "/etc/network/wep.$DV" 2>/dev/null)
if [ -z "$KEY" ]; then
PUBKEY=0
else
PUBKEY=-1
fi
else
PUBKEY=1
fi
#echo "DEBUG:E:$ESSID N:$NWID M:$MODE C:$CHANNEL F:$FREQ S:$SENS R:$RATE K:$KEY R:$RTS F:$FRAG I:$IWCONFIG I:$IWSPY I:$IWPRIV"
rm -f "$TMP"
fi
# ask to scan or manually set wireless network
if $DIALOG --yesno "$MESSAGEWSCAN1" 8 45 ; then
RESCAN=1
while [ $RESCAN -eq 1 ]
do
scanwlan
$DIALOG --extra-button --extra-label "Rescan" --menu "$MESSAGEWSCAN2" 20 70 15 "${WARRAY[@]}" 2>"$TMP"
case $? in
0)
RESCAN=0
;;
3)
;;
*)
bailout 1
;;
esac
done
read -r ESSID <"$TMP" ; rm -f "$TMP"
[ -z "$MODE" ] && MODE="Managed"
else
$DIALOG --inputbox "$MESSAGEW4 $DEVICENAME $MESSAGEW5" 15 50 "$ESSID" 2>"$TMP" || bailout 1
read -r ESSID <"$TMP" ; rm -f "$TMP"
[ -z "$ESSID" ] && ESSID="any"
$DIALOG --inputbox "$MESSAGEW6 $DEVICENAME $MESSAGEW7" 15 50 "$NWID" 2>"$TMP" || bailout 1
read -r NWID <"$TMP" ; rm -f "$TMP"
$DIALOG --inputbox "$MESSAGEW8 $DEVICENAME $MESSAGEW9" 15 50 "$MODE" 2>"$TMP" || bailout 1
read -r MODE <"$TMP" ; rm -f "$TMP"
[ -z "$MODE" ] && MODE="Managed"
$DIALOG --inputbox "$MESSAGEW10 $DEVICENAME $MESSAGEW11" 15 50 "$CHANNEL" 2>"$TMP" || bailout 1
read -r CHANNEL <"$TMP" ; rm -f "$TMP"
if [ -z "$CHANNEL" ]; then
$DIALOG --inputbox "$MESSAGEW12 $DEVICENAME $MESSAGEW13" 15 50 "$FREQ" 2>"$TMP" || bailout 1
read -r FREQ <"$TMP" ; rm -f "$TMP"
fi
fi
WPAON=0
IWDRIVER=$driver
case $IWDRIVER in
ath_pci)
WPA_DEV="madwifi"
;;
ipw2200|ipw2100|ipw3945)
WPA_DEV="wext"
;;
hostap)
WPA_DEV="hostap"
;;
*)
WPA_DEV="wext"
;;
esac
if [ -z "$WPA_DEV" ]; then
if [ -d "/proc/net/ndiswrapper/$DV" ]; then
WPA_DEV=ndiswrapper
elif [ -d "/proc/net/hostap/$DV" ]; then
WPA_DEV=hostap
elif [ "$WLDEVICECOUNT" -eq 1 ]; then
if [ -e /proc/driver/atmel ]; then
WPA_DEV=atmel
fi
fi
fi
WPAON=-1
if [ -n "$WPA_DEV" ]; then
if $DIALOG --yesno "$MESSAGEW22" 15 50; then
# Other wpa options
# scan_ssid [0]|1
# bssid 00:11:22:33:44:55
# priority [0]|Integer
# proto [WPA RSN] WPA|RSN
# key_mgmt [WPA-PSK WPA-EAP]|NONE|WPA-PSK|WPA-EAP|IEEE8021X
# pairwise [CCMP TKIP]|CCMP|TKIP|NONE
# group [CCMP TKIP WEP105 WEP40]|CCMP|TKIP|WEP105|WEP40
# eapol_flags [3]|1|2
WPAON=1
KEY=""
WPASECRET=$(awk '
/iface/{
if(found){
found=0
}
else if (/'"$DV"'/){
found=1
}
}
/wpa-psk/{
if(found){
gsub(/\W*#.*$/,"");
if (gsub(/^\W*wpa-psk\W*/,"")){
gsub(/\W.*$/,"");
print;
exit;
}
}
}
' /etc/network/interfaces)
FIRST_RUN=0 # show the wpasecret input box at least once
while ( [ -z "$WPASECRET" ] || [ "$FIRST_RUN" ] ) ; do
$DIALOG --inputbox "$MESSAGEW23 $ESSID" 15 50 "$WPASECRET" 2>"$TMP" || bailout 1
read -r WPASECRET <"$TMP"
if [ -z "$WPASECRET" ] ; then
$DIALOG --msgbox "Sorry, empty password not allowed, please retry." 0 0 || bailout 1
fi
FIRST_RUN=""
done
rm -f "$TMP"
case $WPA_DEV in
hostap)
MODE="Managed"
;;
esac
else
WPASECRET=""
fi
else
WPASECRET=""
fi
# No need for a wep key if we are using wpa
if [ ! $WPAON -eq 1 ]; then
$DIALOG --inputbox "$MESSAGEW14 $DEVICENAME $MESSAGEW15" 15 50 "$KEY" 2>"$TMP" || bailout 1
read -r KEY <"$TMP" ; rm -f "$TMP"
if [ -n "$KEY" ] && [ "$PUBKEY" -eq 0 ]; then
if ! $DIALOG --yesno "$MESSAGEW25 $DEVICENAME $MESSAGEW26" 15 50; then
PUBKEY=1
fi
fi
fi
$DIALOG --inputbox "$MESSAGEW16 $DEVICENAME $MESSAGEW17" 15 50 "$IWCONFIG" 2>"$TMP" || bailout 1
read -r IWCONFIG <"$TMP" ; rm -f "$TMP"
$DIALOG --inputbox "$MESSAGEW18 $DEVICENAME $MESSAGEW19" 15 50 "$IWSPY" 2>"$TMP" || bailout 1
read -r IWSPY <"$TMP" ; rm -f "$TMP"
$DIALOG --inputbox "$MESSAGEW20 $DEVICENAME $MESSAGEW21" 15 50 "$IWPRIV" 2>"$TMP" || bailout 1
read -r IWPRIV <"$TMP" ; rm -f "$TMP"
writeiwline
fi
# Configure VLAN on this interface?
if $DIALOG --defaultno --yesno "$MESSAGE16" 8 45; then
$DIALOG --inputbox "$MESSAGE17 $DV" 10 45 2>"$TMP" || bailout 1
read -r VLAN <"$TMP" ; rm -f "$TMP"
if [ -n "$VLAN" ]; then
modprobe 8021q # avoid warning that VLAN support isn't present yet
PDV=$DV
DV="vlan$VLAN"
fi
fi
fi
if ("${INTERACTIVE}" && "${DIALOG}" --yesno "${MESSAGE2}" 8 45) || \
(! "${INTERACTIVE}" && [[ "${METHOD}" == 'dhcp' ]]) ; then
if [ -w /etc/network/interfaces ]; then
rm -f "$TMP"
awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}}
/^\W$/{if(blank==0){lastblank=1}else{lastblank=0}{blank=1}}
/\w/{blank=0;lastblank=0}
{if(!(found+lastblank)){print}}
END{print "iface '"$DV"' inet dhcp";if("'"$PDV"'"!=""){print "\tvlan-raw-device '"$PDV"'"}}' \
/etc/network/interfaces >"$TMP"
echo -e "$IWOURLINE" >> "$TMP"
#echo -e "\n\n" >> $TMP
cat "$TMP" >/etc/network/interfaces
rm -f "$TMP"
# Add an "auto" entry
#addauto
fi
else
if "${INTERACTIVE}" ; then
if [ -f /etc/network/interfaces ]; then
awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}}
/address/{if(found){address=$NF}}
/netmask/{if(found){netmask=$NF}}
/broadcast/{if(found){broadcast=$NF}}
/gateway/{if(found){gateway=$NF}}
/dns-nameservers/{if(found){dnsnameservers=$NF}}
END{print address" "netmask" "broadcast" "gateway" "dnsnameservers}' /etc/network/interfaces >"$TMP"
read -r IP NM BC DG NS <"$TMP"
rm -f "$TMP"
fi
$DIALOG --inputbox "$MESSAGE6 $DV" 10 45 "${IP:-192.168.0.1}" 2>"$TMP" || bailout 1
read -r IP <"$TMP" ; rm -f "$TMP"
$DIALOG --inputbox "$MESSAGE7 $DV" 10 45 "${NM:-255.255.255.0}" 2>"$TMP" || bailout 1
read -r NM <"$TMP" ; rm -f "$TMP"
$DIALOG --inputbox "$MESSAGE8 $DV" 10 45 "${BC:-${IP%.*}.255}" 2>"$TMP" || bailout 1
read -r BC <"$TMP" ; rm -f "$TMP"
$DIALOG --inputbox "$MESSAGE9" 10 45 "${DG:-${IP%.*}.1}" 2>"$TMP"
read -r 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:-$DG}" 2>"$TMP"
read -r NS <"$TMP" ; rm -f "$TMP"
fi
if [ -w /etc/network/interfaces ]; then
awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}}
{if(!found){print}}
END{print "\niface '"$DV"' inet static\n\taddress '"$IP"'\n\tnetmask '"$NM"'\n\tnetwork '"${IP%.*}.0"'";if("'"$BC"'"!=""){print "\tbroadcast '"$BC"'"};if("'"$DG"'"!=""){print "\tgateway '"$DG"'"};if("'"$NS"'"!=""){print "\tdns-nameservers '"$NS"'"};if("'"$PDV"'"!=""){print "\tvlan-raw-device '"$PDV"'"};if("'"$IWOURLINE"'"!=""){print "'"$IWOURLINE"'"};print "\n"}' \
/etc/network/interfaces >"$TMP"
cat "$TMP" >/etc/network/interfaces
rm -f "$TMP"
# Add an "auto" entry
#addauto
fi
fi
echo "Done."
}
enable_auto_if () {
addauto
# get persistent interface names across reboots
generate_udev_entry
# make sure we don't run the dhcp stuff when using /etc/network/interfaces
disable_config_dhcp
}
DIALOG="dialog"
NET_DEVICE_NAME="Network_device"
NET_DEVICE_NAME_W="Wireless_device"
NET_DEVICE_NAME_FW="Firewire_device"
NET_DEVICE_NAME_AUTO="Auto"
MESSAGE0="No supported network cards found."
MESSAGE1="Please select network device"
MESSAGE2="Use DHCP broadcast?"
MESSAGE6="Please enter IP Address for"
MESSAGE7="Please enter Network Mask for"
MESSAGE8="Please enter Broadcast Address for"
MESSAGE9="Please enter Default Gateway"
MESSAGE10="Please enter Nameserver(s)"
MESSAGE13="Setup wireless options?"
MESSAGE14="Failed to bring up the interface, would you like to reconfigure it?"
MESSAGE15="Interface enabled, do you want it auto enabled at boot?"
MESSAGE16="Configure VLAN on this interface?"
MESSAGE17="Please enter VLAN id for"
MESSAGEW4="Enter the ESSID for"
MESSAGEW5="\n\n\n(empty for 'any', not recommended !)\n"
MESSAGEW6="Enter the NWID (cell identifier)\nfor"
MESSAGEW7=", if needed\n\n\n"
MESSAGEW8="Enter the mode for"
MESSAGEW9="\n\n(Managed(=default), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n"
MESSAGEW10="Enter channel number for"
MESSAGEW11="\n\n(0 bis 16, empty for auto or if you want to\n enter the frequency next)\n"
MESSAGEW12="Enter the frequency for"
MESSAGEW13="\n\n(e.g 2.412G, empty for auto)"
MESSAGEW14="Enter the encryption key\nfor"
MESSAGEW15="\n\n(empty for cleartext, not recommended !!)"
MESSAGEW16="Enter additional parameters for\n'iwconfig"
MESSAGEW17="' if needed, e.g.\n\n\nsens -80 rts 512 frag 512 rate 5.5M"
MESSAGEW18="Enter additional parameters for\n'iwspy"
MESSAGEW19="' if needed\n\n\n"
MESSAGEW20="Enter additional parameters for\n'iwpriv"
MESSAGEW21="' if needed\n\n\n"
MESSAGEW22="Enable WPA support?"
MESSAGEW23="Enter the WPA passphrase (passphrase must be 8..63 characters) for"
MESSAGEW25="Would you like to store your wep key in it's own private file ("
MESSAGEW26=")? If you say no, your wep key will be stored in /etc/network/interfaces and will be readable by any account on your system. You may want to 'chmod 600 /etc/network/interfaces' if you answer no to this question"
MESSAGEWSCAN1="Scan for available wireless networks?"
MESSAGEWSCAN2="Please choose a wireless network from below:"
NET_DEV="${NET_DEV:-}"
METHOD="${METHOD,,:-}"
IPADDR="${IPADDR:-}"
NETMASK="${NETMASK:-}"
GATEWAY="${GATEWAY:-}"
DNS="${DNS:-}"
INTERACTIVE=true
NETDEVICESCOUNT=0
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 [[ -n "${NET_DEV}" ]] && [[ -n "${METHOD}" ]]; then
if [[ "${METHOD}" != 'dhcp' ]]; then
missed=0
if [[ -z "${IPADDR}" ]]; then
echo "Mandatory parameter IPADDR for method ${METHOD} missing" >&2
((missed++))
fi
if [[ -z "${NETMASK}" ]]; then
echo "Mandatory parameter NETMASK for method ${METHOD} missing" >&2
((missed++))
fi
if [[ "${missed}" -gt 0 ]]; then
echo "Can not proceed, exiting..." >&2
bailout 1
fi
unset missed
fi
LAN="${NET_DEV}"
INTERACTIVE=false
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" ] || [ -d "$i/phy80211" ] ) && basename "$i" ; done) )
set -a WLAN_IWCONFIG
for DEV in $LAN ; do
iwconfig "${DEV}" 2>/dev/null 1>&2 && WLAN_IWCONFIG+=("${DEV}")
done
WLAN=( $(echo "${WLAN_OLD[@]}" "${WLAN_NEW[@]}" "${WLAN_IWCONFIG[@]}" | tr ' ' '\n' | sort -u) )
fi
unset LAN_DEVICES WLAN_DEVICES FIREWIRE_DEVICES NETDEVICES WLAN_IWCONFIG
while read -r dev mac; do
#echo "Making NETDEVICES $NETDEVICESCOUNT $dev"
iswlan=$(echo "$dev" "${WLAN[@]}"|tr ' ' '\n'|sort|uniq -d)
isauto="0"
grep auto /etc/network/interfaces | grep -q "$dev" && isauto="1"
driver=$(ethtool -i "$dev" 2>/dev/null|awk '/^driver:/{print $2}')
if [ "$driver" ]; then
if [ "$iswlan" ]; then
NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac D::$driver W::1 F::0"
else
NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac D::$driver W::0 F::0"
fi
else
if [ "$iswlan" ]; then
NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac W::1 F::0"
else
NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac W::0 F::0"
fi
fi
#echo "Made to ${NETDEVICES[$NETDEVICESCOUNT]}"
((NETDEVICESCOUNT++))
done < <(ip link show | awk ' !/^\s/{sub(/:/,"",$2);IFACE=$2} /link.ether/{if (IFACE !~/^vmnet/) print IFACE" "$2}')
for dev in $LAN; do
if [ "$(ethtool -i "${dev}" 2>/dev/null|awk '/^bus-info:/{print $2}')" == "ieee1394" ]; then
isauto="0"
grep auto /etc/network/interfaces | grep -q "${dev}" && isauto="1"
NETDEVICES[$NETDEVICESCOUNT]="${dev} A::${isauto} D::$(ethtool -i "${dev}" 2>/dev/null|awk '/^driver:/{print $2}') W::0 F::1"
((NETDEVICESCOUNT++))
fi
done
#NETDEVICES="$(cat /proc/net/dev | awk -F: '/eth.:|lan.:|tr.:|wlan.:|ath.:|ra.:/{print $1}')"
if [ -z "${NETDEVICES[*]}" ]; then
$DIALOG --msgbox "$MESSAGE0" 15 45
bailout
fi
count="$NETDEVICESCOUNT"
if [ "$count" -gt 1 ]; then
DEVICELIST=()
mycount=0
while [ $mycount -lt $count ]; do
DEVICE=${NETDEVICES[$mycount]}
#echo "$mycount is $DEVICE"
device2props
#echo "name: $DEVICENAME auto: $isauto fw: $isfirewire mac: $mac driver: $driver"
props2string
DEVICELIST=( "${DEVICELIST[@]}" "$mycount" "$MY_DEVICE_NAME" )
((mycount++))
done
fi
# To translate
EXITKEY="E"
EXITMENU=( $EXITKEY Exit )
# main program loop until they bailout
while (true); do
# first get the device
if [ "$count" -gt 1 ]; then
if "${INTERACTIVE}" ; then
rm -f "$TMP"
$DIALOG --menu "$MESSAGE1" 18 60 12 "${DEVICELIST[@]}" "${EXITMENU[@]}" 2>"$TMP" || bailout
read -r DV <"$TMP" ; rm -f "$TMP"
else
# we have interface name so we need to find its number in NETDEVICES
DV=0
found=false
for DV in "${!NETDEVICES[@]}"; do
if [[ "${NETDEVICES[$DV]}" =~ ^"${NET_DEV} " ]]; then
found=true
break
fi
done
if ! "${found}"; then
echo "There is no interface ${NET_DEV} in the system"
bailout 1
fi
[[ -z "${IFACEDONE}" ]] || bailout
fi
[ "$DV" = "$EXITKEY" ] && bailout
else
# Only one device
DV=0
# they have asked to stop configuring the interface so exit
[ -z "$IFACEDONE" ] || bailout
fi
# device config loop
IFACEDONE=""
while [ -n "$DV" ] && [ -z "$IFACEDONE" ]; do
configiface "${METHOD}" "${IPADDR}" "${NETMASK}" "${GATEWAY}" "${DNS}"
if ! ifup $DV; then
if "${INTERACTIVE}" ; then
$DIALOG --yesno "$MESSAGE14" 15 50 || IFACEDONE="DONE"
else
echo "${MESSAGE14}" >&2
bailout 1
fi
else
if "${INTERACTIVE}" ; then
if $DIALOG --yesno "$MESSAGE15" 12 50 ; then
enable_auto_if
else
remauto
fi
else
enable_auto_if
fi
IFACEDONE="DONE"
fi
done
done
## END OF FILE #################################################################

@ -2,8 +2,6 @@
set -e
working_dir="$(dirname "$0")"
while ! "${working_dir}/check-for-network" ; do
"${working_dir}/netcardconfig"
/usr/sbin/netcardconfig
done

Loading…
Cancel
Save