北邮校园网管登陆python脚本

View Code
#!/usr/bin/env python
#Author: wangkendy (wkendy@gmail.com)
#2012/9/7

import sys
import urllib
import getopt
import hashlib
import re

def usage():
    print sys.argv[0], "-a [login|logout|check] -u <username> -p <password>"
    sys.exit(2)

def login(username, password):
    pid = "1"
    calg = "12345678"
    password = pid + password + calg
    password = hashlib.md5(password).hexdigest()+calg+pid
    params = urllib.urlencode({'DDDDD':username, 
                            'upass':password, 'R1':0, 
                            'R2':1, 'para':'00', 'n':100, '0MKKey':'123456'})
    posturl = 'http://gw.bupt.edu.cn'
    f = urllib.urlopen(posturl, params)
    response = f.read()
#print response
    match = re.search('You have successfully logged into our system.', response);
    if (match):
        print match.group(0)
    else:
        print "Login failed.\n"

def check():
    geturl = 'http://gw.bupt.edu.cn/'
    f = urllib.urlopen(geturl)
    response = f.read()
#time='4435      ';flow='635853    ';fsele=1;fee='0         '
    match = re.search(r'time=\'(\d+)\s*\';flow=\'(\d+)\s*\';fsele=(\d+);fee=\'(\d+)\s+\'', response)    
    if match:
        time = int(match.group(1))
        flow = int(match.group(2))
        fsele = int(match.group(3))
        fee = int(match.group(4))
        print 'Used time : %d Min' % time
        print 'Used internet traffic : %f MByte' % (flow*1.0/1024)
        if fsele==1:
            print 'Balance : RMB ', (fee*1.0/10000)
    else:
        print "You are not logged in.\n"

#get http://gw.bupt.edu.cn/F.htm logout
def logout():
    geturl = 'http://gw.bupt.edu.cn/F.htm'
    f = urllib.urlopen(geturl)
    response = f.read()
#print response
#match = re.search('Logout successfully', response)
#    if match:
#        print match.group(0)
    match = re.search(r'Msg=(\d+);time=\'(\d+)\s*\';flow=\'(\d+)\s*\';fsele=(\d+);fee=\'(\d+)\s+\'', response)    
    if match:
        Msg = int(match.group(1))
        time = int(match.group(2))
        flow = int(match.group(3))
        fsele = int(match.group(4))
        fee = int(match.group(5))
        if Msg == 14:
            print 'Logout successfully.'
        else:
            print "Error Code:%d" % Msg
        print 'Used time : %d Min' % time
        print 'Used internet traffic : %f MByte' % (flow*1.0/1024)
        if fsele==1:
            print 'Balance : RMB ', (fee*1.0/10000)
    else:
        print "You are not logged in.\n"

def main():
    try:
        (opts, args) = getopt.getopt(sys.argv[1:], "a:u:p:h")
    except getopt.GetoptError, err:
        print str(err)
        usage()
        sys.exit(2)

    action = None
    username = None
    passwd = None
    for (o, a) in opts:
        if o == "-a":
            action = a
        elif o == "-u":
            username = a;
        elif o == "-p":
            passwd = a
        elif o == "-h":
            usage()
    
    if (action and username and passwd):
        if action == "login":
            login(username, passwd)
        elif action == "logout":
            logout()
        else:
            usage()
    elif action == "logout":
        logout()
    elif action == "check":
        check()
    else:
        usage()
if __name__ == "__main__":
    main()
原文地址:https://www.cnblogs.com/buptmemory/p/2847003.html