ARM上的linux如何实现无线网卡的冷插拔和热插拔(2)
- UID
- 1029342
- 性别
- 男
|
ARM上的linux如何实现无线网卡的冷插拔和热插拔(2)
1.1. ifcfg-wlan0配置文件/apps/etc/network/ifcfg-wlan0配置文件中的内容如下:
/apps/etc/network >: cat ifcfg-wlan0
#Wireless Network adapter RT3070(wlan0) device configure file
#FILE:/apps/etc/network/ifcfg-wlan0
# Copyright (C) 2012 GuoWenxue <guowenxue@gmail.com QQ:281143292>
DEVICE=wlan0
ONBOOT=yes
NAME="RT3070"
TYPE=WLAN
#The WiFi Module should work on AP or STA mode
#AP mode 是类似于一个不带有限接口lan的无线路由,即市面上的迷你无线路由,STA mode是无线上网终端一般所用的模式。我们要向无线上网就必须使用STA mode
WORKMODE=STA
#WORKMODE=AP
#BOOTPROT should be static or dhcp, it will only take effact
#when the NIC work on STA mode
#可以说静态分配ip,也可以使用DHCP动态分配ip.这里使用静态,静态建立连接到速度快。
BOOTPROTO=static
#这是AP模式要使用的配置
#Work on AP mode IP address
IPADDR_AP=192.168.5.1
NETMASK_AP=255.255.255.0
#Work on STA mode IP address
IPADDR_STA=192.168.1.166
NETMASK_STA=255.255.255.0
#Gateway Settings
GATEWAY=192.168.1.1
DEFROUTE=yes
#DHCP Server configuration, only take effact when the NIC work on AP mode
#这是AP模式要使用的配置
DHCP_SERVER=yes
DHCP_START_IP=192.168.5.10
DHCP_END_IP=192.168.5.100
DHCP_NETMASK=255.255.255.0
DHCP_GATEWAY=192.168.5.1
DHCP_DNS1=4.2.2.2
DHCP_DNS2=8.8.8.8
DHCP_LEASE=18800
1.2. ifup-wlan脚本#ifup-wlan脚本解析
/apps/etc/init.d >: vim /apps/tools/ifup-wlan
#!/bin/sh
# FILE:/usr/sbin/ifup-wlan0
# Copyright (C) 2011 GuoWenxue <guowenxue@gmail.com QQ:281143292>
# This file used to configure the specified network interface device
source /etc/profile
#判断目录是否存在,如果不存在,则赋值为/apps/etc/network目录。
if [ -z "$network_cfg_dir" ]; then
export network_cfg_dir=/apps/etc/network
fi
#将传入的参数赋值给DEVICE ,$1和${1}的区别,例如:
val=10
test=${val}ue 这种情况下,是获取val变量的值,则test=10ue
text=$value 这种情况下,是获取value变量的值,这里value未定义
这两个是不一样的:
带括号的话,所以{}使用来标识哪一部分是变量名
/*****************************转载声明****************************/
DEVICE=${1}
#下面这个是一个很巧妙的语句,关键是&&,”[]”这个也具有判断的功能,一般执行与判断时,如果第一个判断语句是假,则不必往下执行,如果为真就会判断下一个语句。这里如果传进来的参数有不为空,即为真时,就会执行与后面的语句打印信息,并退出脚本。
[ -z "${DEVICE}" ] && {
echo $"Usage: $0 <device name>" >&2
exit 1
}
#下面的判断语句中-o是或的意思,查看man test
( EXPRESSION )
EXPRESSION is true 真判定
! EXPRESSION
EXPRESSION is false 否判定
EXPRESSION1 -a EXPRESSION2
both EXPRESSION1 and EXPRESSION2 are true 与判定
EXPRESSION1 -o EXPRESSION2
either EXPRESSION1 or EXPRESSION2 is true 或判定
-d
FILE
FILE exists and is a directory
-f
FILE
FILE exists and is a regular file
if [ ! -d $network_cfg_dir -o ! -f "$network_cfg_dir/ifcfg-${DEVICE}" ]; then
echo "$0: configuration<$network_cfg_dir/ifcfg-${DEVICE}> not found." >&2
echo "Usage: $0 <device name>" >&2
exit 1
fi
#判断/sys/class/net/wlan0是否存在,说明没有wlan0适配器退出
if [ ! -d /sys/class/net/$DEVICE/ ] ; then
echo "Wireless network adapter $DEVICE dosn't exist, exit now..."
exit
fi
#其中有个“。”相当于source命令。查看
[lingyun@vmlinux fulinux]$ man source
. filename [arguments]
这里是使能ifcfg-wlan0配置文件。
使能了这些文件后上面的一些参数就成为系统中的全局参数,比如说我在下面加入如下代码时,
cd $network_cfg_dir
. ifcfg-${DEVICE}
echo "print wifi workmode is $WORKMODE"
会打印如信息
/apps/tools >: sh ifup-wlan wlan0
print wifi workmode is STA
因为是在脚本中使能了这个文件,所以相当于创建了一个子进程,如果退出这个脚本后出来运行echo $WORKMODE不会有什么显示。
cd $network_cfg_dir
. ifcfg-${DEVICE} |
|
|
|
|
|