中国计量大学路由器自动登录脚本
以联通为例:
首先抓取上网登录页的信息,浏览器按F12,然后选择网络和保留日志,开始登陆。
可以发现,有一个地方是登录的脚本,还是明文传递的
格式为:
http://10.4.66.2:801/eportal/portal/login?callback=dr1003&login_method=1&user_account=%2C0%2C【学号】&user_password=【密码】&wlan_user_ip=【ip】&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=4.2.1&terminal_type=1&lang=zh-cn&v=4297&lang=zh
所以可以根据此构造一个登录脚本。和几年前的基本没啥变化,但是学长用的是curl,我这个路由器没有,所以用wget写一下
#!/bin/sh
username=【学号】;
password=【密码】;
# 获取本机IP
local_ip=$(ip addr show | grep "inet " | grep -v "127.0.0.1"| grep -v "192.168.123.1" | awk '{print $2}' | cut -d/ -f1 | head -n 1)
echo "使用ip=${local_ip}进行登录测试!"
# 登录URL
url="http://10.4.66.2:801/eportal/portal/login?callback=dr1003&login_method=1&user_account=%2C0%2C${username}%40unicom&user_password=${password}&wlan_user_ip=${local_ip}&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=4.2.1&terminal_type=1&lang=zh-cn&v=7696&lang=zh"
# 检查网络连接函数
check_internet() {
ping -c 3 -W 5 www.baidu.com >/dev/null 2>&1
return $?
}
if check_internet; then
echo "网络连接正常"
else
echo "未连接,尝试登录..."
login_result=$(wget --no-check-certificate -qO- "$url")
if echo "$login_result" | grep -q "认证成功"; then
echo "登录成功!"
else
echo "登录失败,返回信息:$login_result"
fi
fi
脚本中有几个要点,比如说padavan的路由器默认地址是192.168.123.1,所以在获取外网IP的时候要给屏蔽掉,如果换过内网ip记得更新一下那里的值。
另外传参的时候会把符号进行处理,如果密码中有诸如!@#..
之类的特殊符号,需要转义,所以我建议自己先抓一下登录的链接,然后只更改IP就可以了。
写好之后记得添加一下权限,否则crontab权限不够:
chmod +x /etc/storage/cjlu.sh
然后添加crontab守护
*/5 7-23 * * * /etc/storage/cjlu.sh >> /tmp/cjlu.log 2>&1
这里写了一个log用于调试,一次跑通的友友可以把后面删掉,参考学长的crontab设置。
评论