• 自动判断网络连接状态,如断网则自动进行联网 (特定环境:某高校校园网)


    编程环境:python3

    使用环境:特定为东北某海滨高校的校园网

    功能: 定期判断是否联网,如果网络端口则自动尽量网络连接操作(校园网登录,login认证)

    说明:用户名及密码需要依照个人情况改写方可使用(必须是某高校的校园网下才可使用)

    # encoding:UTF-8
    from urllib.parse import urlencode
    from urllib.request import urlopen
    import urllib
    import os
    import sys
    import getpass
    import time
    
    
    def login(username="123456", password="123456"):
        # username=input("please input your username
    Username: ")
        # print "please input your password"
        # password=getpass.getpass()
    
        opener = urllib.request.build_opener(urllib.request.HTTPRedirectHandler(), urllib.request.HTTPHandler(debuglevel=0))
        opener.addheaders = [('User-agent',
                              "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)")]
        url = 'http://172.20.20.1:801/srun_portal_pc.php?ac_id=3&'
    
        try:
            response = opener.open(url, urlencode(
                {"ac_id": "3", "action": "login", "nas_ip": "", "password": password, "save_me": "1", "url": "",
                 "user_ip": "", "user_mac": "", "username": username}).encode("utf-8"))
    
            xxx_print = response.read().decode("utf-8")
    
            if xxx_print.find(u'网络已连接') != -1:
                print('
    
    
    ')
                print('##################################')
                print('您已经成功登录')
                print('##################################')
                print('
    
    
    ')
            else:
                print('
    
    
    ')
                print('##################################')
                print('抱歉,您登录失败')
                print('##################################')
                print('
    
    
    ')
                print(xxx_print)
        except Exception as e:
            print('
    
    
    ')
            print('##################################')
            print("网络联通有误, 请检测网络是否可达")
            print('##################################')
            print(e)
    
    def ping():
        try:
            response = urllib.request.urlopen("https://www.baidu.com", timeout=10).read().decode("utf-8")
        except urllib.error.URLError as e:
            print(e)
            return False
        return True
    
    
    if __name__ == "__main__":
        username = "123456"
        password = "123456"
    
        while True:
            flag = ping()
            
            if flag:
                time.sleep(180)
            else:
                login(username, password)
                

    因为校园网运行会突发不稳定问题及定期的认证到期后的自动断网问题,很多人进行远程操作时需要定期的找人给手动联网,这个代码可以实现人在校外,假期在家,出差在外等都能使工作电脑持续保持网络连接状态而且不需要人为干预。

    ===========================

    本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址还有个别文章是汇总网上多份资料所成,在这之中也必有疏漏未加标注者,如有侵权请与博主联系。
  • 相关阅读:
    HDU 1492 The number of divisors(约数) about Humble Numbers
    HDU 2700 Parity
    HDU 4104 Discount
    _getch() 函数,应用于输入密码敲入回车前修改
    函数指针|指针函数|C文件操作
    20160504
    数组指针|指针数组
    短路运算|字符串操作函数|内存mem操作函数
    C/C++ typedef
    Union
  • 原文地址:https://www.cnblogs.com/devilmaycry812839668/p/14316469.html
Copyright © 2020-2023  润新知