脚本讲解
这把要用到 logging
啊,简单讲一下。
这个模块主要用于输出运行日志,可以设置输出日志路径、输出日志等级、日志回滚文件等。相比而言 print
函数跟个傻逼一样只能输出到标准输出。所以咱们一般是使用 logging
全面替换 print
了。
咱是要设置输出级别的,logging
模块中有 DEBUG
INFO
WARNING
ERROR
CRITICAL
5种输出级别。可以将 logging.debug
logging.info
logging.error
等函数都视为 print
,当设置输出的级别为 INFO
时,小于该级别的 logging.debug
函数并不会输出到 Terminal 中。
import requests
import logging
logging.basicConfig( # 输出到Terminal的基本设置
format="%(levelname)-8s %(asctime)s (%(filename)-15s: line %(lineno)3d): %(message)s",
level=logging.INFO
)
Getway_IP = "http://10.3.8.211/login" # 校园网网关登录地址 或换成"http://gw.bupt.edu.cn/login"
LogOut_URL = "http://10.3.8.211/logout" # 校园网网关登出地址 或换成"http://gw.bupt.edu.cn/logout"
Check_URL = "http://www.baidu.com" # 用以检测是否可以连接到外网
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'}
username = "2019?????" # 请改成自己的学工号
password = "Abc??????" # 请改成自己的校园网密码
def check_network():
# 必须禁止重定向,否则 status_code 一直是 200
res = requests.get(Check_URL, timeout=1, allow_redirects=False)
logging.debug(res.status_code)
logging.debug(res.text)
if res.status_code == 200:
logging.debug('您已经成功登录。')
return True
else:
logging.debug('未登录。')
return False
def login(username, password):
params = {
'user': username,
'pass': password
}
res = requests.post(Getway_IP, headers=headers, params=params)
logging.debug(res.text)
return res
def logout():
res = requests.get(LogOut_URL, headers=headers, allow_redirects=False)
logging.debug(res.text)
return res
def main():
if check_network():
logging.info("您已经登录过!")
else:
login(username, password)
if check_network():
logging.info("登录成功!")
else:
logging.error("登录失败,请检查账号密码!")
main()
# # 测试登出
# if logout().status_code == 302: # 登出后会重定向
# logging.info("登出成功!")
# else:
# logging.error("登出失败!")
# # 检查一下网络看看是否确实登出
# if check_network():
# logging.error("确实登出失败!")
# else:
# logging.info("确实登出成功!")
开机自启
配置开机自启的方式有很多,很多文件都是开机后会自动执行的文件,只要实现执行 python 脚本.py
这条命令就好。当然你的 python 环境里要有 requests
logging
这两个模块。我是用 anaconda 管理 python 环境的,默认会使用 base 环境,这个环境配置好就好。
我喜欢用 systemd
配置开机自启,可以看我的这两篇文章 给实验室服务器配置内网穿透,避免内网尴尬,在家也能用服务器~ 和 systemd 使用教程 都对 systemd
的使用给出了讲解。
在 etc/systemd/system
目录下放置如下配置文件,启动服务,设置开机自启
[Unit]
Description=buptCN_pythonScript
After=network.target
[Service]
Type=simple
ExecStart=/home/fxyang/Software/anaconda3/bin/python /home/fxyang/Software/buptCN_pythonScript/buptCN.py
ExecReload=/home/fxyang/Software/anaconda3/bin/python /home/fxyang/Software/buptCN_pythonScript/buptCN.py
RestartSec=3600 # 每一小时重启一次服务 可以将python脚本修改为 先断网再联网
[Install]
WantedBy=multi-user.target