Skip to content

Instantly share code, notes, and snippets.

@jkrajniak
Created April 27, 2014 09:58
Show Gist options
  • Save jkrajniak/11341945 to your computer and use it in GitHub Desktop.
Save jkrajniak/11341945 to your computer and use it in GitHub Desktop.
netlogin script for the KotNET service
# Simple auto login program for network on Katholieke Universiteit Leuven
# Author: Jakub Krajniak <jkrajniak at gmail dot com>
# License: GPLv2
#
# Requirements:
# - Python >= 2.7
# - mechanize (http://wwwsearch.sourceforge.net/mechanize/)
import argparse
import mechanize
import re
import time
class Login:
"""Class for login into the KU KotNet."""
br = mechanize.Browser()
loggedIn = False
def __init__(self, login, password, logfile=None):
self.username = login
self.password = password
self.logFile = logfile
def login(self):
self.br = mechanize.Browser()
self.br.open('http://netlogin.kuleuven.be')
self.br.select_form(nr=1)
self.br.submit()
self.br.select_form(nr=1)
self.br['uid'] = self.username
self.br.form.set_value(self.password, type='password')
ret = self.br.submit()
## get information about available transfer
lines = ret.readlines()
## check if loggin failed
weblogin = [ l for l in lines if 'rc=100' in l]
if len(weblogin) != 0:
loggedIn = True
self.getTransfer(lines)
else:
print 'max loggin excessed'
loggedIn = False
def logout(self):
self.br.select_form(nr=1)
self.br.submit()
self.br.select_form(nr=1)
#self.br['uid'] = self.username
self.br.form.set_value(self.password, type='password')
self.br.submit()
self.loggedIn = False
def getTransfer(self, lines):
avaDownload = [ re.findall('.* = (\d+) of (\d+).*', l) for l in lines if re.match ('.*weblogin.*available.*', l) ]
# [[('10321934806', '10737418240')], [('309602042', '1073741824')]]
downloadLimit = int(avaDownload[0][0][0]) / 1024 / 1024
uploadLimit = int(avaDownload[1][0][0]) / 1024 / 1024
string = 'Download: %s MB, Upload: %s' % (downloadLimit, uploadLimit)
with open(self.logFile, 'a+') as logFile:
logFile.writelines(["%s;%s;%s\n" % (time.strftime('%Y-%m-%d %H:%M:%S'), downloadLimit, uploadLimit)])
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('login', help='Login')
parser.add_argument('password', help='password')
parser.add_argument('--logfile', help='Log file path', default='autologin.log')
args = parser.parse_args()
c = Login(args.login, args.password, args.logfile)
c.login()
if c.loggedIn == False:
c.logout()
c.login()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment