Linux下移动CMCC WLAN自动连接认证
来源:互联网 发布:原田知世 老公是 编辑:程序博客网 时间:2024/05/01 22:58
山东移动的WLAN目前覆盖了很多居民区、公共场所和高校。价格低廉,速度尚可,普通网络应用绰绰有余,准备把家中的10M廉通宽带打入冷宫。
不过CMCC WLAN每次都要Web页认证比较麻烦。幸亏Linux系统的Network Manager有脚本钩子,可以很轻松地解决此问题。
首先先连接一次CMCC接入点,NetworkManager会自动创建一个连接,可以将其设置为自动连接,这样每次开机就可以自动连接了。之后要解决自动认证的问题,这里参照了网上关于OpenWrt自动连接CMCC的脚本:
新建/etc/NetworkManager/dispatcher.d/05-cmcc
:
sudo gedit /etc/NetworkManager/dispatcher.d/05-cmcc
脚本为以下内容:
#!/bin/bash INTERFACE=$1STATUS=$2 bpssUSERNAME="***********"bpssBUSPWD="******" if [[ $CONNECTION_ID = *CMCC* ]]thenexport PATH=.:$PATHmkdir -p /tmp/cmcctouch "/tmp/cmcc/$CONNECTION_ID" #Fake UA should be better ;)user_agent="Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" case "$STATUS" in'up')#login_prewget "http://www.baidu.com/" -O /tmp/cmcc/login_pre.html -U "${user_agent}" action_url=$(cat /tmp/cmcc/login_pre.html|grep "form action"|awk -F'"' '{print $2}'|head -1) wlanuserip_1=$(cat /tmp/cmcc/login_pre.html|grep "wlanuserip_1"|awk -F'"' '{print $8}'|head -1)wlanacname_1=$(cat /tmp/cmcc/login_pre.html|grep "wlanacname_1"|awk -F'"' '{print $8}'|head -1)wlanparameter_1=$(cat /tmp/cmcc/login_pre.html|grep "wlanparameter_1"|awk -F'"' '{print $8}'|head -1) wget "${action_url}?bpssUSERNAME=${bpssUSERNAME}&bpssBUSPWD=${bpssBUSPWD}&wlanuserip_1=${wlanuserip_1}&wlanacname_1=${wlanacname_1}&wlanparameter_1=${wlanparameter_1}&wlanuserfirsturl_1=http://www.baidu.com/&ssid_1=&userAgent_1=${user_agent}&usertype_1=pc&gotopage_1=/cmccpc.jsp&css_1=/css/cmccpc_include.css&sucesspage_1=/cmccpc_index.jsp&cookieage=1&loginmode=static&wlanacssid=&issaveinfo=" -O /tmp/cmcc/login_res.html -U "${user_agent}" --no-check-certificate#iwconfig wlan0 rate 12M;;'down')if [ -e /tmp/cmcc/login_res.html ]thenbase_url=$(cat /tmp/cmcc/login_res.html|grep "base href"|awk -F'"' '{print $2}') logout_url1=$(cat /tmp/cmcc/login_res.html|grep "LogoutServlet"|awk -F'"' '{print $2}')logout_url2=$(cat /tmp/cmcc/login_res.html|grep "ATTRIBUTE_UUID"|awk -F'"' '{print $2}')logout_url3=$(cat /tmp/cmcc/login_res.html|grep "ATTRIBUTE_IPADDRESS"|awk -F'"' '{print $2}') wget "${base_url}${logout_url1}${logout_url2}${logout_url3}1" -O /tmp/cmcc/logout_res.html -U "${user_agent}" --no-check-certificatefi;;esacfi
这个方法实际上就是调用NetworkManager的脚本钩子,当连接建立的时候,判断连接名称是否包含“CMCC”(这个可以根据实际情况修改)。如果是,则wget读取一个网页,实际上应该会自动跳转到认证登录页面;从登录页面中获得登录所需参数;之后再用wget模拟登录提交(这里是GET的)。
之后将此脚本加执行权限:
sudo chmod a+x /etc/NetworkManager/dispatcher.d/05-cmcc
此方法在山东移动CMCC+Arch Linux下面测试通过。理论上只要是GET方法Web认证的都可以用此方法。
不过,CMCC似乎每隔一段时间(据说是8小时)会自动要求重新认证,表现为网络变得不通,打开网页重新跳转到登录页。这时候可以在登录页中手动登录,或者重连CMCC让其再次调用脚本。当然有兴趣的也可以自行修改上面脚本。
- Linux下移动CMCC WLAN自动连接认证
- linux 连接wlan
- XP系统CMCC-AUTO客户端自动认证配置教程
- linux下移动设置的挂载
- linux下移动设备的应用
- linux下移动隐藏文件夹的操作
- CMCC认证被拒绝
- Linux下firefox连接CMCC/CMCC-EDU提示连接不受信任解决办法
- 弱网下移动端网络连接处理策略
- Linux下移动virtualbox虚拟硬盘丢失eth0
- linux下移动Oracle数据库表空间文件
- ORALCE 在 Linux 下移动控制文件步骤
- datagrid上移动下移动
- WPF下移动窗口
- win下移动数据文件
- xp连接cmcc-auto
- android 如何检测连接的wlan wifi需要portal认证
- wlan 认证过程
- Android中的sp和wp类模板以及RefBase类
- 使用Matlab做单变量曲线拟合
- ZOJ 3156 Taxi 二分图+二分查找
- [OpenCV] -- 简单摄像头操作
- FFMPEG架构分析
- Linux下移动CMCC WLAN自动连接认证
- Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
- 终于搞定了SHADOWMAP,
- 2.古堡算式
- 我校成功举办2012中国移动开发者大会经验交流会
- 浅谈java中的单态设计模式
- POSIX互斥锁
- MySQL的mysqldump工具的基本用法
- 程序运行,为什么需要内存?