早上习惯在Ubuntu 11.04 下打开防火墙,竟然报错,看样子和8.04版本firestarter里面错误一样,还是配置文件取值的问题(奇怪为什么老有这个问题呀)
先秀一下我升级后的版本
@linuxidc:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 11.04
Release: 11.04
Codename: natty
还是老办法,修改firestarter的配置文件:/etc/firestarter/firestarter.sh ,错误的原因在于脚本没有取到参数值,原来取值的shell是
# External network interface data
IP=`LANG=C /sbin/ifconfig $IF | grep inet | cut -d : -f 2 | cut -d \ -f 1`
MASK=`LANG=C /sbin/ifconfig $IF | grep Mas | cut -d : -f 4`
BCAST=`LANG=C /sbin/ifconfig $IF |grep Bcast: | cut -d : -f 3 | cut -d \ -f 1`
错误就是在设置LANG=C上面,我测试了一下,这样会取到空值:
@linuxidc:~$ export LANG=C
@linuxidc:~$ /sbin/ifconfig wlan0
wlan0 Link encap:??? ???? 00:26:c7:76:2e:12
inet ??:192.168.1.100 ??:192.168.1.255 ??:255.255.255.0
inet6 ??: fe80::226:c7ff:fe76:2e12/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 ???:1
?????:89993 ??:0 ??:0 ??:0 ??:0
?????:83451 ??:0 ??:0 ??:0 ??:0
??:0 ??????:1000
????:68073259 (68.0 MB) ????:13938821 (13.9 MB)
修正这个错误很简单,还是我刚才贴的8.04firestarter错误的链接,在脚本的第三行增加LANG=en_US,取消掉LANG=C,大致的内容是:
#!/bin/bash
#-----------( Firestarter Control Script )-----------#
#增加下面这行
LANG=en_US
#中间
#内容
#省略
# External network interface data
IP=`/sbin/ifconfig $IF | grep inet | cut -d : -f 2 | cut -d \ -f 1`
MASK=`/sbin/ifconfig $IF | grep Mas | cut -d : -f 4`
BCAST=`/sbin/ifconfig $IF |grep Bcast: | cut -d : -f 3 | cut -d \ -f 1`
NET=$IP/$MASK
最后祝大家好运