红联Linux门户
Linux帮助

解决 Fedora core5 linux系统通过学校bras上网问题

发布时间:2006-07-20 17:18:20来源:红联作者:wuhu911
  之前我的校友hellwolf已经写过相应的bolg。

  但是对于初学linux者有一定的问题(特别是路由设置方面)

  我写了个程序方便大家使用

贴一下

l2tpdconf.py

1 #!/usr/bin/env python
2 #written by Secularbird
3 #secularbird.eagle@gmail.com
4 #2006.5.13
5
6 "get files configured for seubras server"
7
8
9
10 def recorder(str):
11 record = open ('test0' ,'r')
12 alines = record.readlines()
13 record.close()
14
15 record = open('test0' ,'w+')
16 mark=0
17 if alines == []:
18 record.write(str)
19 else:
20 for eachline in alines:
21 if eachline != str:
22 record.write(eachline)
23 else:
24 record.write(str)
25 mark=1
26 if mark == 0:
27 record.write(str)
28 record.close()
29
30 def confchapsecrect(username,pin):
31 chap_secrets=open('/etc/ppp/chap-secrets','r')
32 alines=chap_secrets.readlines()
33 chap_secrets.close()
34
35 chap_secrets=open('/etc/ppp/chap-secrets','w+')
36 mark=0
37 if alines==[]:
38 chap_secrets.write(username+' * '+pin+ ' *\n')
39 else:
40 for eachline in alines:
41 if eachline[0:(len(username))]!=username:
42 chap_secrets.write(eachline)
43 else:
44 chap_secrets.write(username+' * '+pin+ ' *'+'\n')
45 mark=1
46 if mark == 0:
47 chap_secrets.write(username+' * '+pin+ ' *'+'\n')
48 chap_secrets.close()
49
50 def confoptionl2tpd():
51 optionl2tpd=open('/etc/ppp/options.l2tpd','r')
52 alines=optionl2tpd.readlines()
53 optionl2tpd.close()
54
55 optionl2tpd=open('/etc/ppp/options.l2tpd','w+')
56 if alines==[]:
57 optionl2tpd.write('noauth\ndefaultroute\nproxyarp\n')
58 else:
59 for eachline in alines:
60 if eachline!='auth\n' and eachline!='noproxyarp\n' and eachline!='nodefaultroute\n'\
61 and eachline!='noauth\n' and eachline!='proxyarp\n' and eachline!='defaultroute\n' :
62 optionl2tpd.write(eachline)
63 optionl2tpd.write('noauth\ndefaultroute\nproxyarp\n')
64 optionl2tpd.close()
65 recorder('option.l2tpd ok\n')
66
67 def confl2tpdconf(username):
68 l2tpdconf=open('/etc/l2tpd/l2tpd.conf','r')
69 alines=l2tpdconf.readlines()
70 l2tpdconf.close()
71
72 l2tpdconf=open('/etc/l2tpd/l2tpd.conf','w+')
73 mark = 0
74 if alines==[]:
75 l2tpdconf.write('\
76 [lac seubras]\n\
77 lns = bras.seu.edu.cn\n\
78 redial = yes\n\
79 redial timeout = 15\n\
80 max redials = 5\n\
81 require chap = yes\n\
82 refuse pap = yes\n\
83 name=%s\n\
84 require authentication = yes\n\
85 ppp debug = no\n\
86 pppoptfile = /etc/ppp/options.l2tpd\n'%username)
87 else:
88 index=0
89 for eachline in alines:
90 if eachline=='[lac seubras]\n':
91 l2tpdconf.write('\
92 [lac seubras]\n\
93 lns = bras.seu.edu.cn\n\
94 redial = yes\n\
95 redial timeout = 15\n\
96 max redials = 5\n\
97 require chap = yes\n\
98 refuse pap = yes\n\
99 name=%s\n\
100 require authentication = yes\n\
101 ppp debug = no\n\
102 pppoptfile = /etc/ppp/options.l2tpd\n'%username)
103 mark = 1
104 for eachline in alines[index+11:]:
105 l2tpdconf.write(eachline)
106 break
107 else:
108 index=index+1
109 l2tpdconf.write(eachline)
110 if mark == 0:
111 l2tpdconf.write('\
112 [lac seubras]\n\
113 lns = bras.seu.edu.cn\n\
114 redial = yes\n\
115 redial timeout = 15\n\
116 max redials = 5\n\
117 require chap = yes\n\
118 refuse pap = yes\n\
119 name=%s\n\
120 require authentication = yes\n\
121 ppp debug = no\n\
122 pppoptfile = /etc/ppp/options.l2tpd\n'%username)
123 l2tpdconf.close()
124 recorder('l2tpd.conf ok\n')
125
126 def deletekey(username,pin):
127 delkey = open('/etc/ppp/chap-secrets','r')
128 alines = delkey.readlines()
129 delkey.close()
130
131 delkey = open('/etc/ppp/chap-secrets','w+')
132 for eachline in alines:
133 if eachline != username+' * '+pin+' *':
134 delkey.write(eachline)
135 delkey.close()
136
routeconf.sh

1 SERVER=bras.seu.edu.cn
2 GATEWAY=172.16.0.1
3 (
4 /sbin/route add -net $SERVER netmask 255.255.255.255 gw $GATEWAY
5 /sbin/route add -net 172.16.0.0 netmask 255.240.0.0 gw $GATEWAY
6 /sbin/route add -net 202.119.0.0 netmask 255.255.224.0 gw $GATEWAY
7 /sbin/route add -net 202.119.144.0 netmask 255.255.240.0 gw $GATEWAY
8 /sbin/route add -net 211.65.32.0 netmask 255.255.224.0 gw $GATEWAY
9 ) &> /dev/null
10
11 /sbin/route del default
12
13 /sbin/modprobe ip_nat_ftp
14
15 /sbin/service l2tpd start
16 echo 'c seubras'>/var/run/l2tp-control


视各学校的bras服务器,和默认网关不同需更改 1到9行的内容。第4行是加入host,一定要有,不然删除原有defaultroute后会出问题

bras.py

1 #!/usr/bin/env python
2
3 import os
4 import l2tpdconf
5
6 username=raw_input('username:')
7 pin=raw_input('pin:')
8 l2tpdconf.confchapsecrect(username,pin)
9 l2tpdconf.confoptionl2tpd()
10 l2tpdconf.confl2tpdconf(username)
11
12 os.system('sh routeconf.sh')

声明:此版本还存在一些问题,。仅在Fedora core5 linux上试验过,视情况不同还需自己改进。

使用前,确保自己已经装了来l2tpd。此程序需root用户运行。
文章评论

共有 3 条评论

  1. jssjjsnt 于 2006-08-08 13:18:18发表:

    呵呵

  2. jssjjsnt 于 2006-08-08 12:36:18发表:

    谢谢

  3. suson 于 2006-08-08 12:24:26发表:

    不错~~