最近把实验室的服务器安装上ESXI虚拟化平台,其中虚拟化平台中Linux虚拟机我一般都采用最小化安装,不使用带有GUI图形界面,校园网中没有采用客户端认证,而是使用锐捷的web认证,正好这几天学习python,所以使用python3写了一下认证脚本,将脚本仍到服务器上,配置计划任务,这样就能很轻松的上外网了。
github:https://github.com/GuoYingLong/eportal-login
使用方法(CentOS7):
- 安装python3并创建python虚拟环境
# 安装依赖包
$ yum -y install wget gcc epel-release
# 安装 Python3.6
$ yum -y install python36 python36-devel
# 配置并载入 Python3 虚拟环境
$ cd /opt
$ python3.6 -m venv python3 # python3 为虚拟环境名称, 可自定义
$ source /opt/python3/bin/activate # 退出虚拟环境可以使用 deactivate 命令
#看到下面提示表示虚拟环境创建成功
(pyhon3) [root@localhost python3]
- 安装依赖
#在python虚拟环境中执行
pip install requests
pip install sys
- 使用vim编辑器保存下面配置,注意修改认证服务器的IP地址
vim /opt/ruijie-rz.py
# -*- coding: utf-8 -*-
import requests, time, json, sys
# 认证服务器访问的IP地址
IP = 'http://锐捷web认证服务器
params = (
('method', 'login'),
)
# 登录
def login(username, password):
# 设置表格数据
data = {
'userId': username,
'password': password,
'service': '',
'queryString': 'wlanuserip=d3f94b58e944bac825d41e10028c6ed5&wlanacname=f0a84436888c6c46f8767008165e7980&ssid=&nasip=21aea9e1c34fe0bfecaa6d4544af21c6&snmpagentip=&mac=92077bdf24107b48b3372f446e0cafe9&t=wireless-v2&url=709db9dc9ce334aa024775e22fb74a232056518a7aae8aa6&apmac=&nasid=f0a84436888c6c46f8767008165e7980&vid=d468ea41e905d091&port=f1492fa065990d34&nasportid=5b9da5b08a53a540a2f7a2b77b704e7de708bfac0f0f136217662997cd7aedea',
'operatorPwd': '',
'operatorUserId': '',
'validcode': '',
'passwordEncrypt': 'false'
}
while True:
try:
response = requests.post(IP + '/eportal/InterFace.do', params=params, data=data)
if response.status_code == 200: #判断返回http状态码200为成功
response.encoding = 'UTF-8' #修改编码格式为UTF-8
result = json.loads(response.text)
if 'success' in result['result']:
# print(response.text)
print("校园网登入成功!",result['message'])
break
elif '密码不匹配,请输入正确的密码!' in result['message']:
print("密码错误!请重新尝试")
break
elif '用户不存在' in result['message']:
print("用户不存在!请重新尝试")
break
else:
print("登录失败", result['message'])
time.sleep(3)
else:
print("提交请求失败!")
time.sleep(3)
except Exception as e:
print("正在尝试重连......", e)
time.sleep(3)
if __name__ == '__main__':
#封装成文件后,外部传递参数
username = sys.argv[1]
password = sys.argv[2]
login(username,password)
- 运行脚本
cd /opt
python ./ruijie-rz.py 用户名 密码