北京邮电大学校园网自动登录脚本 Ubuntu18.04 Python systemd 开机自启

脚本讲解

这把要用到 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

你可能感兴趣的:(Linux,前端,ieee论文,信息检索,ubuntu,python)