Last active
December 4, 2017 11:03
-
-
Save Sg4Dylan/429f34982b817d14c12b1b6161344491 to your computer and use it in GitHub Desktop.
模拟深澜Srun系统认证(Python/Shell)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
#coding:utf-8 | |
# Author: Sg4Dylan --<sg4dylan#gmail.com> | |
# Purpose: A simple script to complete srun's webauth | |
# Created: 03/01/2017 | |
# 配合 crontab 使用 | |
# */5 6-22 * * * /usr/bin/python3 /pathtoyourscript/LoginSrunWebAuth.py | |
import requests | |
import ast | |
import pexpect | |
import time | |
class LoginSrunWebauth: | |
username = '' | |
password = '' | |
# set your school's suffix | |
suffix = '@xxx.edu.cn' | |
header = { | |
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25', | |
} | |
# set your api url | |
url = "http://10.1.88.4/cgi-bin/do_login_juniper" | |
def __init__(self, username, password): | |
self.username = username; | |
self.password = password; | |
if not self.suffix in self.username: | |
self.username += self.suffix | |
print("Initializing..."); | |
def genLoginForm(self): | |
LoginForm = "{'username': '" + \ | |
self.username + \ | |
"','password': '" + \ | |
self.password + \ | |
"','drop': '1','type': '1','n': '100',}" | |
return ast.literal_eval(LoginForm) | |
def finalLogin(self): | |
print("Try to login with %s (at) %s" % (self.username,self.password)) | |
r = requests.post(self.url, data=self.genLoginForm(), headers=self.header) | |
if "Srun_Login" in r.text: | |
print("Login Successful!") | |
return "" | |
return r.text | |
class NetStatusCheck: | |
check_target = "" | |
def __init__(self, check_target="qq.com", username, password): | |
if check_target != "": | |
self.check_target = check_target | |
status, result = self.ping_module(self.check_target) | |
while status != "OK": | |
insta = LoginSrunWebauth(username, password) | |
insta_result = insta.finalLogin() | |
if "Login Successful!" == insta_result: | |
print("Waiting for recheck status.") | |
time.sleep(2) | |
if "E2532" in insta_result: | |
print("Script will redial after five seconds.") | |
time.sleep(5) | |
continue | |
status, result = self.ping_module(self.check_target) | |
print("Dial complete.") | |
def ping_module(self, requests_address, ping_times=4, timeout_set=5): | |
ping_result = pexpect.spawn("ping -c%s %s" % (str(ping_times), requests_address),timeout=timeout_set) | |
ping_result_list = ["9999.99"] * 4 | |
ping_status = "OK" | |
try: | |
for line in ping_result: | |
perline = line.decode('utf-8') | |
# print(perline) | |
if "Usage" in perline: | |
ping_status = "Need address" | |
if "unknown" in perline or "not known" in perline or "Cannot assign" in perline: | |
ping_status = "Unknow server" | |
if "rtt" in perline: | |
ping_result_list = perline[23:-5].split("/",3) | |
except pexpect.exceptions.TIMEOUT: | |
ping_status = "Time out" | |
pass | |
finally: | |
print("Net connection status: %s" % ping_status) | |
return ping_status, ping_result_list | |
NetStatusCheck(username="", password="") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
#coding:utf-8 | |
# Author: Sg4Dylan --<sg4dylan#gmail.com> | |
# Purpose: A simple script to complete srun's webauth | |
# Created: 10/14/2016 | |
import requests | |
import ast | |
class LoginSrunWebauth: | |
username = '' | |
password = '' | |
# set your school's suffix | |
suffix = '[INPUT SUFFIX]' | |
header = { | |
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25', | |
} | |
url = "http://10.1.88.4/cgi-bin/do_login_juniper" | |
def __init__(self, username, password): | |
self.username = username; | |
self.password = password; | |
if not self.suffix in self.username: | |
self.username += self.suffix | |
print("Initializing..."); | |
def genLoginForm(self): | |
LoginForm = "{'username': '" + \ | |
self.username + \ | |
"','password': '" + \ | |
self.password + \ | |
"','drop': '1','type': '1','n': '100',}" | |
return ast.literal_eval(LoginForm) | |
def finalLogin(self): | |
print("Try to login with %s (at) %s" % (self.username,self.password)) | |
r = requests.post(self.url, data=self.genLoginForm(), headers=self.header) | |
if "Srun_Login" in r.text: | |
print("Login Successful:") | |
return "" | |
return r.text | |
# input your username & password | |
msg = LoginSrunWebauth("[INPUT USERNAME]", "[INPUT PASSWORD]") | |
print(msg.finalLogin()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Usage: ./srun_login.sh [username] [password] | |
DOWN="wget -qO-" | |
DATE=`date "+%Y-%m-%d %H:%M:%S"` | |
echo "[$DATE] Logging..." | |
DATA="username=$1&password=$2&drop=1&type=1&n=100" | |
RESULT=`$DOWN --post-data="$DATA" "http://10.1.88.4/cgi-bin/do_login_juniper" 2> /dev/null` | |
if echo $RESULT | grep -q "<script" | |
then | |
echo "Success" | |
else | |
echo "Failed" | |
echo $RESULT | |
fi | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment