slitaz-boot-scripts rev 188
Improve network.sh with wpa_cli; faster boot
author | Rohit Joshi <jozee@slitaz.org> |
---|---|
date | Mon Jan 04 16:44:56 2010 +0000 (2010-01-04) |
parents | c9296cbaaafa |
children | 3c447e4af92c |
files | etc/init.d/network.sh etc/init.d/wpa_action.sh |
line diff
1.1 --- a/etc/init.d/network.sh Tue Dec 22 12:10:13 2009 +0100 1.2 +++ b/etc/init.d/network.sh Mon Jan 04 16:44:56 2010 +0000 1.3 @@ -10,6 +10,7 @@ 1.4 . $2 1.5 fi 1.6 1.7 + 1.8 Boot() { 1.9 # Set hostname. 1.10 echo -n "Setting hostname... " 1.11 @@ -20,7 +21,143 @@ 1.12 echo -n "Configuring loopback... " 1.13 /sbin/ifconfig lo 127.0.0.1 up 1.14 /sbin/route add 127.0.0.1 lo 1.15 - status 1.16 + status 1.17 +} 1.18 + 1.19 + 1.20 +eth() { 1.21 +# use ethernet 1.22 + ifconfig $INTERFACE up 1.23 +} 1.24 + 1.25 +wifi() { 1.26 + # For wifi. Users just have to enable it throught yes and usually 1.27 + # essid any will work and interface is autodetected. 1.28 + if [ "$WIFI" = "yes" ] || grep -q "wifi" /proc/cmdline; then 1.29 + ifconfig $INTERFACE down 1.30 + 1.31 + # Confirm if $WIFI_INTERFACE is the wifi interface 1.32 + if [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then 1.33 + echo "$WIFI_INTERFACE is not a wifi interface, changing it." 1.34 + WIFI_INTERFACE=$(grep : /proc/net/dev | cut -d: -f1 | \ 1.35 + while read dev; do iwconfig $dev 2>&1 | \ 1.36 + grep -iq "essid" && { echo $dev ; break; }; \ 1.37 + done) 1.38 + [ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf 1.39 + fi 1.40 + 1.41 + echo -n "configuring $WIFI_INTERFACE..." 1.42 + ifconfig $WIFI_INTERFACE up 1.43 + if iwconfig $WIFI_INTERFACE | grep -q "Tx-Power"; then 1.44 + iwconfig $WIFI_INTERFACE txpower on 1.45 + fi 1.46 + status 1.47 + 1.48 + [ -n "$WPA_DRIVER" ] || WPA_DRIVER="wext" 1.49 + 1.50 + 1.51 + IWCONFIG_ARGS="" 1.52 + [ -n "$WIFI_MODE" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS mode $WIFI_MODE" 1.53 + [ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL" 1.54 + 1.55 + [ -n "$WIFI_KEY" ] && case "$WIFI_KEY_TYPE" in 1.56 + wep|WEP) 1.57 + IWCONFIG_ARGS="$IWCONFIG_ARGS key $WIFI_KEY" 1.58 + iwconfig $WIFI_INTERFACE essid "$WIFI_ESSID" $IWCONFIG_ARGS 1.59 +# wpa_supplicant can also deal with wep encryption but iwconfig is preferred 1.60 +# Tip:Use unquoted strings for hexadecimal key in wep_key0 1.61 +# cat /etc/wpa_supplicant.conf > /tmp/wpa.conf 1.62 +# cat >> /tmp/wpa.conf <<EOF 1.63 +#ctrl_interface=/var/run/wpa_supplicant 1.64 +#ctrl_interface_group=0 1.65 +#ap_scan=1 1.66 +#network={ 1.67 +# ssid="$WIFI_ESSID" 1.68 +# scan_ssid=1 1.69 +# key_mgmt=NONE 1.70 +# wep_key0="$WIFI_KEY" 1.71 +# wep_tx_keyidx=0 1.72 +# priority=5 1.73 +#} 1.74 +#EOF 1.75 + ;; 1.76 + wpa|WPA) cat /etc/wpa_supplicant.conf > /tmp/wpa.conf # load pre-configured multiple profiles 1.77 + cat >> /tmp/wpa.conf <<EOF 1.78 +ctrl_interface=/var/run/wpa_supplicant 1.79 +ctrl_interface_group=0 1.80 +ap_scan=1 1.81 +network={ 1.82 + ssid="$WIFI_ESSID" 1.83 + scan_ssid=1 1.84 + proto=WPA 1.85 + key_mgmt=WPA-PSK 1.86 + psk="$WIFI_KEY" 1.87 + priority=5 1.88 +} 1.89 +EOF 1.90 + echo "starting wpa_supplicant, for WPA-PSK" 1.91 + wpa_supplicant -B -W -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE 1.92 + ;; 1.93 + any|ANY) cat /etc/wpa_supplicant.conf > /tmp/wpa.conf 1.94 + cat >> /tmp/wpa.conf <<EOF 1.95 +ctrl_interface=/var/run/wpa_supplicant 1.96 +ctrl_interface_group=0 1.97 +ap_scan=1 1.98 +network={ 1.99 + ssid="$WIFI_ESSID" 1.100 + scan_ssid=1 1.101 + key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE 1.102 + group=CCMP TKIP WEP104 WEP40 1.103 + pairwise=CCMP TKIP 1.104 + psk="$WIFI_KEY" 1.105 + priority=5 1.106 +} 1.107 +EOF 1.108 + echo "starting wpa_supplicant for any key type" 1.109 + wpa_supplicant -B -W -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE 1.110 + ;; 1.111 + esac 1.112 + 1.113 + rm -f /tmp/wpa.conf 1.114 + 1.115 + INTERFACE=$WIFI_INTERFACE 1.116 + fi 1.117 + 1.118 +} 1.119 + 1.120 +wpa() 1.121 +{ 1.122 + DHCP_SCRIPT="/etc/init.d/wpa_action.sh" 1.123 + wpa_cli -a$DHCP_SCRIPT -B 1.124 +} 1.125 + 1.126 +dhcp() { 1.127 + 1.128 +# For a dynamic IP with DHCP. 1.129 + if [ "$DHCP" = "yes" ] ; then 1.130 + echo "Starting udhcpc client on: $INTERFACE... " 1.131 + if [ -d /var/run/wpa_supplicant ]; then # wpa wireless && wpa_ctrl_open interface is up 1.132 + wpa 1.133 + else # fallback on udhcpc: wep, eth 1.134 + /sbin/udhcpc -b -T 1 -A 12 -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid 1.135 + fi 1.136 + fi 1.137 + 1.138 +} 1.139 + 1.140 +static_ip() { 1.141 +# For a static IP. 1.142 + if [ "$STATIC" = "yes" ] ; then 1.143 + echo "Configuring static IP on $INTERFACE: $IP... " 1.144 + /sbin/ifconfig $INTERFACE $IP netmask $NETMASK up 1.145 + /sbin/route add default gateway $GATEWAY 1.146 + # Multi-DNS server in $DNS_SERVER. 1.147 + /bin/mv /etc/resolv.conf /tmp/resolv.conf.$$ 1.148 + for NS in $DNS_SERVER 1.149 + do 1.150 + echo "nameserver $NS" >> /etc/resolv.conf 1.151 + done 1.152 + fi 1.153 } 1.154 1.155 # Stopping everything 1.156 @@ -40,101 +177,26 @@ 1.157 } 1.158 1.159 Start() { 1.160 - # For wifi. Users just have to enable it through yes and usually 1.161 - # essid any will work and interface is autodetected. 1.162 - if [ "$WIFI" = "yes" ] || grep -q "wifi" /proc/cmdline; then 1.163 - if [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then 1.164 - echo "$WIFI_INTERFACE is not a wifi interface, changing it." 1.165 - WIFI_INTERFACE=$(grep : /proc/net/dev | cut -d: -f1 | \ 1.166 - while read dev; do iwconfig $dev 2>&1 | \ 1.167 - grep -iq "essid" && { echo $dev ; break; }; \ 1.168 - done) 1.169 - [ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf 1.170 - fi 1.171 - [ -n "$WPA_DRIVER" ] || WPA_DRIVER="wext" 1.172 - IWCONFIG_ARGS="" 1.173 - [ -n "$WIFI_MODE" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS mode $WIFI_MODE" 1.174 - [ -n "$WIFI_KEY" ] && case "$WIFI_KEY_TYPE" in 1.175 - wep|WEP) IWCONFIG_ARGS="$IWCONFIG_ARGS key $WIFI_KEY";; 1.176 - wpa|WPA) cat > /tmp/wpa.conf <<EOF 1.177 -ap_scan=1 1.178 -network={ 1.179 - ssid="$WIFI_ESSID" 1.180 - scan_ssid=1 1.181 - proto=WPA 1.182 - key_mgmt=WPA-PSK 1.183 - psk="$WIFI_KEY" 1.184 - priority=5 1.185 -} 1.186 -EOF 1.187 - echo "Starting wpa_supplicant for WPA-PSK" 1.188 - wpa_supplicant -B -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE 1.189 - ;; 1.190 - any|ANY) cat > /tmp/wpa.conf <<EOF 1.191 -ap_scan=1 1.192 -network={ 1.193 - ssid="$WIFI_ESSID" 1.194 - scan_ssid=1 1.195 - key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE 1.196 - group=CCMP TKIP WEP104 WEP40 1.197 - pairwise=CCMP TKIP 1.198 - psk="$WIFI_KEY" 1.199 - priority=5 1.200 -} 1.201 -EOF 1.202 - echo "Starting wpa_supplicant for any key type" 1.203 - wpa_supplicant -B -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE 1.204 - ;; 1.205 - esac 1.206 - rm -f /tmp/wpa.conf 1.207 - [ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL" 1.208 - echo -n "Configuring $WIFI_INTERFACE..." 1.209 - ifconfig $WIFI_INTERFACE up 1.210 - if iwconfig $WIFI_INTERFACE | grep -q "Tx-Power"; then 1.211 - iwconfig $WIFI_INTERFACE txpower on 1.212 - fi 1.213 - iwconfig $WIFI_INTERFACE essid "$WIFI_ESSID" $IWCONFIG_ARGS 1.214 - status 1.215 - INTERFACE=$WIFI_INTERFACE 1.216 - fi 1.217 - 1.218 - # For a dynamic IP with DHCP. 1.219 - if [ "$DHCP" = "yes" ] ; then 1.220 - echo "Starting udhcpc client on: $INTERFACE... " 1.221 - /sbin/udhcpc -b -T 1 -A 12 -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid 1.222 - fi 1.223 - 1.224 - # For a static IP. 1.225 - if [ "$STATIC" = "yes" ] ; then 1.226 - echo "Configuring static IP on $INTERFACE: $IP... " 1.227 - /sbin/ifconfig $INTERFACE $IP netmask $NETMASK up 1.228 - /sbin/route add default gateway $GATEWAY 1.229 - # Multi-DNS server in $DNS_SERVER. 1.230 - /bin/mv /etc/resolv.conf /tmp/resolv.conf.$$ 1.231 - for NS in $DNS_SERVER 1.232 - do 1.233 - echo "nameserver $NS" >> /etc/resolv.conf 1.234 - done 1.235 - fi 1.236 + eth 1.237 + wifi 1.238 + dhcp 1.239 + static_ip 1.240 } 1.241 1.242 1.243 -# Looking for arguments: 1.244 +# looking for arguments: 1.245 if [ -z "$1" ]; then 1.246 Boot 1.247 Start 1.248 else 1.249 case $1 in 1.250 start) 1.251 - Start 1.252 - ;; 1.253 + Start ;; 1.254 stop) 1.255 - Stop 1.256 - ;; 1.257 + Stop ;; 1.258 restart) 1.259 Stop 1.260 - Start 1.261 - ;; 1.262 + Start ;; 1.263 *) 1.264 echo "" 1.265 echo -e "\033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart]"
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/etc/init.d/wpa_action.sh Mon Jan 04 16:44:56 2010 +0000 2.3 @@ -0,0 +1,11 @@ 2.4 +#!/bin/sh 2.5 +INTERFACE=$1 2.6 + 2.7 +# For a dynamic IP with DHCP. 2.8 +if [ "$2" = "CONNECTED" ]; then 2.9 + [ -f /var/run/udhcpc.$INTERFACE.pid] && killall udhcpc 2.10 + /sbin/udhcpc -b -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid 2.11 +elif [ "$2" = "DISCONNECTED" ]; then 2.12 + /sbin/udhcpc -b -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid 2.13 +fi 2.14 +