Skip to content

Instantly share code, notes, and snippets.

@tonyseek
Last active December 14, 2015 17:49
Show Gist options
  • Save tonyseek/5125314 to your computer and use it in GitHub Desktop.
Save tonyseek/5125314 to your computer and use it in GitHub Desktop.
The network setup script for Shenzhen University.
#!/usr/bin/env python
#-*- coding:utf-8 -*-
"""The login CLI for Shenzhen University IPv6.
"""
import argparse
import urllib
import getpass
import sys
DEFAULT_GATEWAY = "http://ip6.2166drcom.szu.edu.cn/"
DEFAULT_PASSWORD_PROMPT = "password: "
def login(gateway, username, password):
form = {'DDDDD': str(username), 'upass': str(password),
'0MKKey': "%B5%C7%C2%BC+Login", 'v6ip': ""}
return urllib.urlopen(gateway, data=urllib.urlencode(form))
def parse_args():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("-u", "--username", required=True, type=int,
help="Shenzhen University Card ID")
parser.add_argument("-g", "--gateway", type=str, default=DEFAULT_GATEWAY,
help="IPv6 login gateway of internal network")
args = parser.parse_args()
args.password = None
while not args.password:
args.password = getpass.getpass(DEFAULT_PASSWORD_PROMPT)
return args
def main():
args = parse_args()
try:
login(args.gateway, args.username, args.password)
except IOError as e:
print >> sys.stderr, e
exit(1)
if __name__ == "__main__":
main()
route delete 0.0.0.0/0 192.168.154.33
route delete 0.0.0.0/0 10.0.0.1
route add 0.0.0.0/0 192.168.154.33 metric 500 -p
route add 0.0.0.0/0 10.0.0.1 metric 1 -p
route add 10.0.0.0/8 10.0.0.1 metric 1 -p
route add 172.16.0.0/12 192.168.154.33 metric 1 -p
route add 192.168.0.0/16 192.168.154.33 metric 1 -p
route add 210.39.0.0/20 192.168.154.33 metric 500 -p
pause
#!/usr/bin/env sh
dev=$1
if [ -t $dev ]; then
echo > /dev/stderr "usage: $0 [device_name]"
exit 1
fi
gw=`netstat -nr | awk -v dev=$dev '{if ($4 == "UG" && $8 == dev) print $2 }'`
if [ -t $gw ]; then
echo > /dev/stderr "cannot found gateway of $dev"
exit 1
fi
# instead of default route
ip route delete 0.0.0.0/0 dev $dev via $gw
ip route add 0.0.0.0/0 dev $dev via $gw metric 1000
# shenzhen university internal accessible
ip route add 172.16.0.0/12 dev $dev via $gw metric 1
ip route add 192.168.0.0/16 dev $dev via $gw metric 1
ip route add 210.39.0.0/20 dev $dev via $gw metric 1
exit 0

Installation

$ cd /usr/local/sbin/
$ szu_network=https://gist.github.com/tonyseek/5125314/raw
$ sudo wget $szu_network/setup-szu-network.sh -O setup-szu-network.sh
$ sudo wget $szu_network/login-szu-ipv6.py -O login-szu-ipv6.py
$ sudo chmod +x setup-szu-network.sh
$ sudo chmod +x login-szu-ipv6.py

Usage Example

Environment

  1. The Internet has been connected to eth0
  2. The internal network has been connected to eth1

Setup

You should ensure eth0 and eth1 up both.

$ ip addr show
$ ipconfig # another way

Then you can use this script.

$ sudo setup-szu-network.sh eth1

Now the Internet and the internal network of Shenzhen University could be accessible both.

IPv6 Login

$ login-szu-ipv6.py -u 123456
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment