首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM上的linux如何实现无线网卡的冷插拔和热插拔(5)

ARM上的linux如何实现无线网卡的冷插拔和热插拔(5)

#下面是将子网的网络地址、子网掩码、动态分配的起止地址、域名解析、网关、租约时间(IP默认失效时间等写到/tmp/dhcpd_wlan0.config文件中,其中“>”和“>>”是重定向:
1shell遇到”>”操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在直接创建。 无论左边命令执行是否成功。右边文件都会变为空。
2、“>>”操作符,判断右边文件,如果不存在,先创建。以添加方式打开文件,会分配一个文件描述符[不特别指定,默认为1,2]然后,与左边的标准输出  
形成下面类似的结构:
[root@localhost etc]# cat dhcpd.conf
            ddns-update-style interim;
            ignore client-updates;

            subnet 192.168.1.0 netmask 255.255.255.0 {

            # --- default gateway
            option routers                  192.168.1.1;                                                                 /*默认路由器地址*/
            option subnet-mask              255.255.255.0;                                                         /*默认子网掩码*/

            option nis-domain               "510.home";                                                             /*为客户机设置nis*/
            option domain-name              "510.home";                                                          /*客户机所属DNS域的域名*/
            option domain-name-servers      192.168.1.1;                                                      /*DNS服务器地址*/

            option time-offset              -18000;                                                                    /*为客户设置与格林威治时间的偏移时间*/


            option host-name        "myDhcpServer";                                                             /*设置主机名*/



            range dynamic-bootp 192.168.1.2 192.168.1.128 ;                                               /*服务器将为客户分配192.168.1.2128段内的ip*/
            default-lease-time 21600;                                                                                  /*默认地址租期,单位为s*/
            max-lease-time 43200;                                                                                     /*最长地址租期,单位为s*/

            }


       echo "subnet $DHCP_SUBNET netmask $DHCP_NETMASK { " > $conf_file                          
       echo "  range $DHCP_START_IP $DHCP_END_IP;" >> $conf_file                                 
       echo "  option domain-name-servers $DHCP_DNS1, $DHCP_DNS2;" >> $conf_file                 
       echo "  option routers $DHCP_GATEWAY;" >> $conf_file                                      
       echo "  default-lease-time $DHCP_LEASE;" >> $conf_file                                   
       echo "  max-lease-time 72000;" >> $conf_file                                             
       echo "  authoritative;" >> $conf_file                                                     
       echo "}" >> $conf_file                                                                    

#大多数情况下,DHCP 的安装不创建一个 dhcpd.leases 文件,在你启动 DHCP 服务器之前,你必须创建空文件 dhcpd.leases
                                                                                       
       touch $lease_file                                                                        
       dhcpd -q -pf $pid_file -cf $conf_file -lf $lease_file $DEVICE                             
   fi                                                                                            
#下面启动AP模式
                                                                                             
   # Start hostapd to server on AP mode                                                         
   mkdir -p /var/run/hostapd                                                                     
   /apps/tools/hostapd -B ${network_cfg_dir}/hostapd.conf                                       
}                                                                                                

#真正的主题在这,上面相当于C函数,而这里相当于main函数。判断是不是STA模式,如果是就先关闭wifi,再启动STA模式,AP模式亦然                                                                                                
if [ $WORKMODE == "STA" ]; then                                                                  
   stop_wifi_worker                                                                              
   configure_wifi_sta                                                                           
else                                                                                 
   stop_wifi_worker                                                                  
   configure_wifi_ap                                                                     
fi   
#结束

AP  mode我们暂时不用考虑。到这里差不多可以实现启动自动运行wlan0 的目的了,有线的eth0可以拔出。
运行结果如下:

~ >: ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:0C:43:30:72:81  
          inet addr:192.168.1.166  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:136 errors:0 dropped:15 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14849 (14.5 KiB)  TX bytes:548 (548.0 B)

~ >: iwconfig wlan0
wlan0     IEEE 802.11bgn  ESSID:"Router_LingYun"  
          Mode:Managed  Frequency:2.437 GHz  Access Point: D8:5D:4C:18:04:7A   
          Bit Rate=1 Mb/s   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thrff   Fragment thrff
          Encryption keyff
          Power Managementn
          Link Quality=49/70  Signal level=-61 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:4   Missed beacon:0

~ >: ping www.baidu.com
PING www.baidu.com (115.239.210.26): 56 data bytes
64 bytes from 115.239.210.26: seq=0 ttl=55 time=58.396 ms
64 bytes from 115.239.210.26: seq=1 ttl=55 time=95.457 ms
64 bytes from 115.239.210.26: seq=2 ttl=55 time=97.314 ms
64 bytes from 115.239.210.26: seq=3 ttl=55 time=99.431 ms
64 bytes from 115.239.210.26: seq=4 ttl=55 time=97.498 ms

--- www.baidu.com ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 58.396/89.619/99.431 ms
~ >:
表明已经连接上了网络。
继承事业,薪火相传
返回列表