今天写了一个获取当前公网ip并且自动断开宽带连接的文件,和大家分享下。
这个文件的具体用途大家懂的,可以尽管拿去用,不过目前只适用于Windows平台,我的Python版本是2.7的,win32ras模块需要下载pywin32。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
#!coding: cp936 import win32ras import time,os def Connect(dialname, account, passwd): dial_params = (dialname, ' ', ' ', account, passwd, ' ') return win32ras.Dial( None , None , dial_params, None ) def DialBroadband(): dialname = '宽带连接' #just a name account = '********' passwd = '****************' try : #handle is a pid, for disconnect or showipadrress, if connect success return 0. #account is the username that your ISP supposed, passwd is the password. handle, result = Connect(dialname, account, passwd) if result = = 0 : print "Connection success!" return handle, result else : print "Connection failed, wait for 5 seconds and try again..." time.sleep( 5 ) DialBroadband() except : print "Can't finish this connection, please check out." return def Disconnect(handle): if handle ! = None : try : win32ras.HangUp(handle) print "Disconnection success!" return "success" except : print "Disconnection failed, wait for 5 seconds and try again..." time.sleep( 5 ) Disconnect() else : print "Can't find the process!" return def Check_for_Broadband(): connections = [] connections = win32ras.EnumConnections() if ( len (connections) = = 0 ): print "The system is not running any broadband connection." return else : print "The system is running %d broadband connection." % len (connections) return connections def ShowIpAddress(handle): print win32ras.GetConnectStatus(handle) data = os.popen( "ipconfig" , "r" ).readlines() have_ppp = 0 ip_str = None for line in data: if line.find( "宽带连接" )> = 0 : have_ppp = 1 #if your system language is English, you should write like this: #if have_ppp and line.strip().startswith("IP Address"): #in othewords, replace the "IPv4 地址" to "IP Address" if have_ppp and line.strip().startswith( "IPv4 地址" ): ip_str = line.split( ":" )[ 1 ].strip() have_ppp = 0 print ip_str #get my ipaddress anf disconnect broadband connection. def main(): data = Check_for_Broadband() #if exist running broadband connection, disconnected it. if data ! = None : for p in data: ShowIpAddress(p[ 0 ]) if (Disconnect(p[ 0 ]) = = "success" ): print "%s has been disconnected." % p[ 1 ] time.sleep( 3 ) else : pid, res = DialBroadband() ShowIpAddress(pid) time.sleep( 3 ) Disconnect(pid) return "finsh test" test = main() print test |
基本的注释都有,大家可以自己参考。
总结
以上就是本文关于Python获取当前公网ip并自动断开宽带连接实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:http://blog.csdn.net/mingzznet/article/details/52887470