借鉴少数派《使用 Padavan 路由器实现校园网自动 Web 认证》的文章,简化了一下登录脚本,锐捷系统可用。
#!/bin/sh
#需要抓包获取queryString等信息
userId="<用户名>"
password="<密码>"
queryString=""
passwordEncrypt=false
logger -t web-login "开始检测网络认证状态"
KEYWORD=$(curl -s http://baidu.com grep "NextURL")
if [[ "$(printf '%s' "${KEYWORD}")" != '' ]]; then
logger -t web-login "检测到尚未认证,尝试自动认证"
CURRENT_IP=$(ifconfig grep inet grep -v inet6 grep -v 127 grep -v 192 awk '{print $(NF-2)}' cut -d ':' -f2)
MAC_ADDRESS=$(ifconfig ra0 grep HWaddr awk '{print $NF}' tr '[:upper:]' '[:lower:]' tr ':' '-')
LOGIN_STATUS=$(curl -s -X POST "http://10.0.6.247/eportal/InterFace.do?method=login" --data "userId=${userId}&password=${password}&service=&queryString=${queryString}&operatorPwd=&operatorUserId=&validcode=&passwordEncrypt=${passwordEncrypt}")
SUCCESS=$(echo ${LOGIN_STATUS} grep success)
if [[ "$(printf '%s' "${SUCCESS}")" != '' ]]; then
logger -t web-login "自动认证成功"
else
LOGIN_STATUS=$(echo ${LOGIN_STATUS} cut -d ',' -f3 cut -d '"' -f4)
logger -t web-login "自动认证失败: ${LOGIN_STATUS}"
fi
else
logger -t web-login "检测到已经认证"
fi