python拨号_Python利用win32ras拨号上网

本文介绍了如何使用Python的win32ras模块进行拨号上网和断开宽带连接。首先导入win32ras模块,然后通过Dial函数拨号,参数包括RAS入口名、用户名和密码。成功连接后,可以使用HangUp函数断开连接。代码还包含了检查当前是否已建立宽带连接、显示公网IP地址的功能,并提供了主函数来演示整个流程。此方法适用于Windows平台,需要安装pywin32库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值