Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1502974
  • 博文数量: 164
  • 博客积分: 2993
  • 博客等级: 少校
  • 技术积分: 1718
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-24 11:42
文章分类

全部博文(164)

文章存档

2014年(1)

2013年(36)

2012年(90)

2011年(37)

分类: Python/Ruby

2012-02-24 16:45:37

Python利用win32ras拨号上网
2010-07-25 10:47

import win32ras

# Dialup with a RAS entry
ret = win32ras.Dial(
    None,
    None,
    ("windows_ras_entry_name", "", "", "username", "password", ""),
    None
)
# ret[0]不等于0,表示connect成功,否则connect失败
# Hangup the connection
win32ras.HangUp(ret[0])

win32ras需要安装pywin32后才能调用

Python实现获取当前公网ip并且自动断开宽带连接功能

今天写了一个获取当前公网ip并且自动断开宽带连接的文件,和大家分享下。

这个文件的具体用途大家懂的,可以尽管拿去用,不过目前只适用于Windows平台,我的Python版本是2.7的,win32ras模块需要下载pywin32。

代码如下:

#!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

基本的注释都有了,欢迎批评指点。

阅读(6394) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~