[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

自动连接无线网络的代码



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

最近我写了一个自动处理无线网络的代码,大家看看有没有bug,有没有更简单
的方法(当然不是指用network-manage这种)。
处理流程是这样的。
先关闭无线连接,然后看参数。
如果是scannet的,扫描当前网络状态。让用户挑一个想要的网络,输入密码,
然后dhcp。
如果是interface的,从/etc/network/interface里面找出配置列表。让用户挑
一个,启用。
如果是autoiface的,从/etc/network/interface里面找出配置列表。依次扫描
essid是否存在,存在的,启用。
其余的,参数当作/etc/network/interface里面的配置名称,启用。

- ----------------------------------------
#! /bin/bash

function scannet (){
ifconfig ath0 up
wnet_list=$(iwlist ath0 scan | grep "ESSID" | sed
's/.*ESSID:"\(.*\)"/\1/')
target_net=$(zenity --list --column="Access Point" $wnet_list)
test -z "$target_net" && exit 0
net_pass=$(zenity --entry --hide-text --title=password --text="")
iwconfig ath0 essid "$target_net" key s:"$net_pass"
dhclient3 ath0
}

function autoiface (){
ifconfig ath0 up
wnet_list=$(iwlist ath0 scan | grep "ESSID" | sed
's/.*ESSID:"\(.*\)"/\1/')
iface_list=$(grep "iface w" /etc/network/interfaces | sed 's/iface
\(.*\) inet/\1/')
ifconfig ath0 down
for iface in $iface_list
do
    line=$(grep -n -m1 "iface $iface" /etc/network/interfaces | cut
- -f1 -d:)
    essid=$(cat /etc/network/interfaces | tail -n +$line | grep -m 1
"wireless-essid" | sed "s/.*wireless-essid\\s*\(.*\)/\1/")
    essid_in_list=$(echo $wnet_list | grep $essid)
    test -n "$essid_in_list" && target_net=$iface; break
done
}

ifstatus=$(cat /etc/network/run/ifstate | grep ath0 | sed "s/ath0=//")
if [ -n "$ifstatus" ]; then
    echo -n "ifdown $ifstatus..."
    /sbin/ifdown ath0
    echo "done"
else
    ifconfig ath0 down
fi

case "$1" in
"scannet")
    scannet
    exit 0
    ;;
"interface")
    iface_list=$(grep "iface w" /etc/network/interfaces | sed 's/iface
\(.*\) inet static/\1/')
    target_net=$(zenity --list --column="Network Config" $iface_list)
    ;;
"autoiface")
    autoiface
    ;;
*)
    target_net="$1"
    ;;
esac

test -z "$target_net" && exit 0
echo "ifup $target_net..."
/sbin/ifup ath0=$target_net
sleep 1
echo "done"
- ----------------------------------------
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHI03w8b9PPLS5iI4RAojYAJ9iWWHYIGvap9KAwGbL0aBlKs7ChwCglndF
F6zKaUyHBqh9eOEUVT946dU=
=97c2
-----END PGP SIGNATURE-----



Reply to: