admin 管理员组文章数量: 1184232
使用 Python 实现PPPOE拨号连接
PPPOE大家小时候应该都用过,输入宽带账号和密码后,会向运营商请求一个公网IP,通过此IP访问互联网,小编身边有几个朋友是做自媒体工作室的,不同平台对于IP的要求严格苛刻,需要做到单号单IP,当然,这些都是题外话了,咱们直接进入正文!完整的代码我已放到文章最末尾
一、模块导入
import subprocess
import sys
subprocess
模块
subprocess
模块允许我们通过 Python 程序执行外部命令或程序。在本代码中,
subprocess
用于执行拨号命令和获取 IP 地址。简单来说就是python的小跟班帮其传递指令给系统,本文的宽带连接就是通过
subprocess
底层传输拨号指令的
新手小白,可以看下:
subprocess模块允许 Python 程序生成新的进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。换句话说,subprocess使得 Python 能够与系统的命令行环境进行交互,执行外部命令或程序,并处理其输出。
sys
模块
sys
模块提供了一些与 Python 解释器紧密相关的功能。在本代码中,
sys
用于在发生错误时退出程序。
二、定义拨号连接函数:
dial_connection
def dial_connection(username, password):
# 默认的拨号连接名称
connection_name = "宽带连接"
# 构建拨号命令
command = f"rasdial {connection_name} {username} {password}"
try:
# 执行拨号命令
result = subprocess.check_output(command, stderr=subprocess.STDOUT, text=True, shell=True)
print(result)
# 获取拨号后的IP地址
ip_command = "ipconfig | findstr /i \"IPv4 Address\""
ip_result = subprocess.check_output(ip_command, stderr=subprocess.STDOUT, text=True, shell=True)
print(ip_result)
except subprocess.CalledProcessError as e:
# 拨号失败,打印错误信息
print(f"An error occurred: {e.output}")
sys.exit(1)
1. 默认的拨号连接名称
connection_name = "宽带连接"
这里定义了默认的拨号连接名称为“宽带连接”。这是 Windows 系统中常见的拨号连接名称,用户可以根据实际情况修改。小编提示 :一般Windows系统中默认拨号名称是:宽带连接,大家在写的时候可以查看
2. 构建拨号命令
command = f"rasdial {connection_name} {username} {password}"
使用字符串格式化构建拨号命令。
rasdial
是 Windows 下用于拨号网络连接的命令行工具
,后跟连接名称、用户名和密码。
3. 执行拨号命令
result = subprocess.check_output(command, stderr=subprocess.STDOUT, text=True, shell=True)
print(result)
subprocess.check_output:执行构建的命令,并捕获其输出。-
参数说明
:
command:要执行的命令。stderr=subprocess.STDOUT:将标准错误合并到标准输出中。text=True:以字符串形式返回输出,而不是字节。shell=True:通过 shell 执行命令,这在执行带有管道或重定向的命令时是必要的。
执行成功后,输出拨号命令的结果。
4. 获取拨号后的 IP 地址
ip_command = "ipconfig | findstr /i \"IPv4 Address\""
ip_result = subprocess.check_output(ip_command, stderr=subprocess.STDOUT, text=True, shell=True)
print(ip_result)
-
构建 IP 获取命令
:使用
ipconfig获取网络配置信息,并通过findstr过滤出包含 “IPv4 Address” 的行。 -
执行命令并输出结果
:同样使用
subprocess.check_output执行命令,并打印结果以显示当前 IP 地址。
5. 错误处理
except subprocess.CalledProcessError as e:
# 拨号失败,打印错误信息
print(f"An error occurred: {e.output}")
sys.exit(1)
-
捕获异常
:如果拨号命令执行失败,
subprocess.check_output会抛出CalledProcessError异常。 - 打印错误信息 :输出错误信息,帮助用户了解失败原因。
-
退出程序
:使用
sys.exit(1)退出程序,并返回状态码1表示发生错误。此处就是咱们开头引入的sys
三、定义主函数:
main
def main():
# 输入用户名和密码
username = input("Enter your username: ")
password = input("Enter your password: ")
# 进行拨号连接
dial_connection(username, password)
1. 输入用户名和密码
username = input("Enter your username: ")
password = input("Enter your password: ")
使用 input 函数提示用户输入拨号连接所需的用户名和密码。这些输入将传递给 dial_connection 函数以建立连接。小编提示:用户在终端上填写宽带拨号的账号和密码,此处是 明文显示
2. 进行拨号连接
dial_connection(username, password)
这里我们调用前面定义的
dial_connection
函数,传入用户输入的用户名和密码,开始愉快的拨号过程。
四、程序入口
if __name__ == "__main__":
main()
这段代码确保当脚本作为主程序运行时,调用
main
函数。它防止在脚本被导入为模块时自动执行
main
函数。小编提示:如果大家后期想做卡密系统(类似于市面上的单机单卡验证系统)在这个入口处做一扇门,如果大家感兴趣我下一期写一个文章专门讲解
五:完整代码
完整的代码我放这了,运行后输入宽带的账号和密码就可以正常切网(ipv4),
import subprocess
import sys
def dial_connection(username, password):
# 默认的拨号连接名称
connection_name = "宽带连接"
# 构建拨号命令
command = f"rasdial {connection_name} {username} {password}"
try:
# 执行拨号命令
result = subprocess.check_output(command, stderr=subprocess.STDOUT, text=True, shell=True)
print(result)
# 获取拨号后的IP地址
ip_command = "ipconfig | findstr /i \"IPv4 Address\""
ip_result = subprocess.check_output(ip_command, stderr=subprocess.STDOUT, text=True, shell=True)
print(ip_result)
except subprocess.CalledProcessError as e:
# 拨号失败,打印错误信息
print(f"An error occurred: {e.output}")
sys.exit(1)
def main():
# 输入用户名和密码
username = input("Enter your username: ")
password = input("Enter your password: ")
# 进行拨号连接
dial_connection(username, password)
if __name__ == "__main__":
main()
以上就是本期内容: 使用 Python 实现拨号连接
欢迎大家在评论区留言
版权声明:本文标题:使用 Python 实现PPPOE拨号连接,拿来即用!_python宽带拨号 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1773722410a3564963.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论