昨天写了一个使用Bandwidthd监控流量,经过今天的观察,效果还不错,丫WCDMA确实快阿,烧起流量来也快,哗啦啦几十M就不见鸟= =!
昨晚还遗留了一个问题没有解决:
因为Bandwidthd监控网段来进行流量监控,而WCDMA连接之后是动态IP,虽然现在基本确定获取的IP在112.96.0.0这个网段内,但是这个东西,我也不敢确定,那么就得弄个东西,在获取的IP不是这个网段的时候来提醒不是。
刚开始使用notify-send,遇到root权限下提示不显示在当前桌面的问题,后来在牛哄哄花主席的提醒下,设置了一下DISPLAY环境变量,出是出来了,但是跟当前用户的提示是重叠的= =!,又因为目前notify-send无法更改提示的位置,所以放弃。 这个时候牛哄哄的花主席又出来了:使用zenity,哈,问题圆满解决,修改wcdma-bandwidthd-start脚本内容入下:
#!/bin/bash
export DISPLAY=:0.0 #修换环境变量,显示在当前用户的第一屏
export LANG=zh_CN.utf-8 #修改语言环境,否则下面的出现中文将无法正常工作
/etc/init.d/bandwidthd start
notify-send "$4" -i "gnome-nettool" -u "critical" -t 100000 #还是意思一下,用notify显示一下IP
当获取的IP不在112.96.0.0网段时,弹出警告框提醒
if [[ ! "$4" =~ 112.96(.[0-9]{1,3}){2} ]]; then
zenity --warning --text="当前获取的IP地址$4n不在监控范围内,请重新配置Bandwidthd" --width=350
fi
小测试一下,工作正常,哦耶~~~

恩,现在可以安心用着了,不过...这流量烧的,确实心痛阿....
==================纠结的分割线==================
好吧,我快跟大骨头一样成脚本控了....
话说为了因对即将到来的广西/湖南/浙江的千里大奔袭,前天跟家里请示了一下然后去办了一个超猥亵联通沃~上网卡套餐,刚开始看中便宜又实惠的移动TD套餐的,结果发现那丫更猥琐,广西区内不限时随你搞,漫游每个月只能用10个小时= =!很明显算流量的联通更适合我一点,遂办之...
华为E176G的WCDMA无线网卡在Ubuntu里的驱动支持相当的好,插上直接识别,设置一下拨号,直接联通(恩,暂时还没发现联不通的杯具出现...),登录联通网站一查流量,哦也,不对哈,我刚办的卡怎么已经被用掉400来M了,夸张了咩...电话经销商,态度还算不错,让我去换张新的...
OK,扯远了...
因为这个沃~的最低一档资费是每月1G流量,虽然俺用起来会比较小心,8过流量这个东西明显不是我能控制的,监控就是必须的了...无奈这个网卡在Win里的拨号软件带流量统计,而Ubuntu的Network Manager明显米有这个东西,百google度了一圈,简单又基本满足我要求的就数Bandwidthd啦,直接从源里安装:
sudo apt-get install bandwidthd
安装的时候会要求选择要监控的网卡,我这里比较特殊,因为同时开了VPN,因此选择了any。当然,这个在配置文件里可以修改的~~当然,要查看流量统计,一个http服务器是必须的,我以前已经安装了apache,这里就不扯了~
安装完成之后当然是要修改一下配置文件
sudo gedit /etc/bandwidthd/bandwidthd.conf
具体配置百google度上已经烂大街了,这里就不罗嗦,要实现我要的WCDMA流量统计,最重要的是要修改两个地方,即dev和subnet。
dev就是刚才安装时候选择的要监控的网络接口,而subnet就是要监控的网段(或者IP地址)。难点也就在这里...
因为这个WCDMA的ppp拨号是动态IP,那我要监控那个网段呢?呃...米办法,体力活动开始,经过N次(不小于20)拨号/断开的操作之后,初步确定我所用的号码(广东中山的号)联通网络之后获得的IP段是112.96.0.0/255.248.0.0,恩,暂时添加这个网段~~~至于bandwidthd其他一些7788的配置,百google度...
OK,那么下面的任务就是只有在使用这个WCDMA的时候才启动bandwidthd,方法很简单:
1. 关闭bandwidthd的自启动
sudo rm /etc/rc2.d/S20bandwidthd
2. 在/etc/ppp/ip-up.d中添加启动bandwidthd的脚本wcdma-bandwidthd-start,并修改他的权限为可执行
#!/bin/sh
/etc/init.d/bandwidthd start
3. 2. 在/etc/ppp/ip-down.d中添加关闭bandwidthd的脚本wcdma-bandwidthd-stop,并修改他的权限为可执行
#!/bin/sh
/etc/init.d/bandwidthd stop
OK...大工基本告成...
呃...为什是基本呢?这个是因为我想在启动脚本里判断获取的IP是否在监控的IP段里,不在监控范围的话使用notify-send发送提醒,但是...貌似在root权限下弹不出来,求高手解决...