7.6 用脚本设置以太网与无线LAN

配置以太网很简单,因为它使用物理线缆,没有认证之类的特殊要求。但是无线LAN可就需要认证了,比如WEP密钥,还有所要连接的无线网络的ESSID。让我们看看如何用脚本来连接无线网络和有线网络。

7.6.1 新手上路

我们需要用ifconfig分配IP地址和子网掩码才能连接上有线网络。对于无线网络来说,还需要其他工具(如iwconfigiwlist)来配置更多的参数。

7.6.2 实战演练

要通过有线网络接口连接网络,执行下面的脚本:

  1. #!/bin/bash
  2. #文件名: etherconnect.sh
  3. #用途: 连接以太网
  4. #根据你的设置修改下面的参数
  5. ######### PARAMETERS ###########
  6. IFACE=eth0
  7. IP_ADDR=192.168.0.5
  8. SUBNET_MASK=255.255.255.0
  9. GW=192.168.0.1
  10. HW_ADDR='00:1c:bf:87:25:d2'
  11. # HW_ADDR 是可选的
  12. #################################
  13. if [ $UID -ne 0 ];
  14. then
  15. echo "Run as root"
  16. exit 1
  17. fi
  18. #进行新的配置之前关闭接口
  19. /sbin/ifconfig $IFACE down
  20. if [[ -n $HW_ADDR ]];
  21. then
  22. /sbin/ifconfig hw ether $HW_ADDR
  23. echo Spoofed MAC ADDRESS to $HW_ADDR
  24. fi
  25. /sbin/ifconfig $IFACE $IP_ADDR netmask $SUBNET_MASK
  26. route add default gw $GW $IFACE
  27. echo Successfully configured $IFACE

用WEP连接无线LAN的脚本如下:

  1. #!/bin/bash
  2. #文件名: wlan_connect.sh
  3. #用途: 连接无线 LAN
  4. #根据你的设置修改下面的参数
  5. ######### PARAMETERS ###########
  6. IFACE=wlan0
  7. IP_ADDR=192.168.1.5
  8. SUBNET_MASK=255.255.255.0
  9. GW=192.168.1.1
  10. HW_ADDR='00:1c:bf:87:25:d2'
  11. #如果不想欺骗物理地址,在行上注释
  12. ESSID="homenet"
  13. WEP_KEY=8b140b20e7
  14. FREQ=2.462G
  15. #################################
  16. KEY_PART=""
  17. if [[ -n $WEP_KEY ]];
  18. then
  19. KEY_PART="key $WEP_KEY"
  20. fi
  21. #进行新的配置之前关闭接口
  22. /sbin/ifconfig $IFACE down
  23. if [ $UID -ne 0 ];
  24. then
  25. echo "Run as root"
  26. exit 1;
  27. fi
  28. if [[ -n $HW_ADDR ]];
  29. then
  30. /sbin/ifconfig $IFACE hw ether $HW_ADDR
  31. echo Spoofed MAC ADDRESS to $HW_ADDR
  32. fi
  33. /sbin/iwconfig $IFACE essid $ESSID $KEY_PART freq $FREQ
  34. /sbin/ifconfig $IFACE $IP_ADDR netmask $SUBNET_MASK
  35. route add default gw $GW $IFACE
  36. echo Successfully configured $IFACE

7.6.3 工作原理

命令ifconfigiwconfigroute必须以超级用户身份来运行,因此在脚本一开始要检查是否为超级用户。

连接以太网的这个脚本相当简单明了,例子中涉及的概念在7.2节中都已讲解过。让我们看看用来连接无线LAN的命令。

无线LAN需要essid、密钥、网络频率等参数。essid是我们想要连接的无线网络的名称。一些使用WEP(Wired Equivalent Protocol,有线等效保密协议)的网络需要用WEP密钥进行验证,有些网络则不需要这一步。WEP密钥通常是一个10位十六进制数口令。频率则是分配给特定网络的。iwconfig命令用来为无线网卡配置适合的无线网络、WEP密钥以及频率。

我们可以用iwlist工具扫描并列出可用的无线网络。用下面的命令进行扫描:

  1. # iwlist scan
  2. wlan0 Scan completed :
  3. Cell 01 - Address: 00:12:17:7B:1C:65
  4. Channel:11
  5. Frequency:2.462 GHz (Channel 11)
  6. Quality=33/70 Signal level=-77 dBm
  7. Encryption key:on
  8. ESSID:"model-2"

可以从扫描结果中的Frequency:2.462 GHz (Channel 11)行提取频率参数。

7.6.4 参考

1.15节讲解了字符串比较。