今天写了一个获取当前公网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