python实现自动更换ip的方法


Posted in Python onMay 05, 2015

本文实例讲述了python实现自动更换ip的方法。分享给大家供大家参考。具体实现方法如下:

#!/usr/bin/env python
#-*- encoding:gb2312 -*-
# Filename: IP.py
import sitecustomize
import _winreg
import ConfigParser
from ctypes import *
print '正在进行网络适配器检测,请稍候…'
print
netCfgInstanceID = None
hkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \
r'System\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}')
keyInfo = _winreg.QueryInfoKey(hkey)
# 寻找网卡对应的适配器名称 netCfgInstanceID
for index in range(keyInfo[0]):
hSubKeyName = _winreg.EnumKey(hkey, index)
hSubKey = _winreg.OpenKey(hkey, hSubKeyName)
try:
hNdiInfKey = _winreg.OpenKey(hSubKey, r'Ndi\Interfaces')
lowerRange = _winreg.QueryValueEx(hNdiInfKey, 'LowerRange')
# 检查是否是以太网
if lowerRange[0] == 'ethernet':
driverDesc = _winreg.QueryValueEx(hSubKey, 'DriverDesc')[0]
print '检测到网络适配器名:', driverDesc
netCfgInstanceID = _winreg.QueryValueEx(hSubKey, 'NetCfgInstanceID')[0]
print '检测到网络适配器ID:', netCfgInstanceID
if netCfgInstanceID == None:
print '没有找到网络适配器,程序退出'
exit()
break
_winreg.CloseKey(hNdiInfKey)
except WindowsError:
print r'Message: No Ndi\Interfaces Key'
# 循环结束,目前只提供修改一个网卡IP的功能
_winreg.CloseKey(hSubKey)
_winreg.CloseKey(hkey)
# 通过修改注册表设置IP
strKeyName = 'System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\' + netCfgInstanceID
print '网络适配器的注册表地址是:\n', strKeyName
hkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \
strKeyName, \
0, \
_winreg.KEY_WRITE)
config = ConfigParser.ConfigParser()
print
print '正在打开IP.ini配置文件…'
config.readfp(open('IP.ini'))
IPAddress = config.get("school","IPAddress")
SubnetMask = config.get("school","SubnetMask")
GateWay = config.get("school","GateWay")
DNSServer1 = config.get("school","DNSServer1")
DNSServer2 = config.get("school","DNSServer2")
DNSServer = [DNSServer1,DNSServer2]
print '配置文件内设定的信息如下,请核对:'
print
print 'IP地址:', IPAddress
print '子关掩码:', SubnetMask
print '默认网关:', GateWay
print '主DNS服务器:', DNSServer1
print '次DNS服务器:', DNSServer2
print
res = raw_input('现在,请您决定:输入1,则将配置文件写入系统;输入2,则将现有的系统设定还原为全部自动获取;否则程序退出:')
if str(res) == '1':
try:
_winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'IPAddress', None, _winreg.REG_MULTI_SZ, [IPAddress])
_winreg.SetValueEx(hkey, 'SubnetMask', None, _winreg.REG_MULTI_SZ, [SubnetMask])
_winreg.SetValueEx(hkey, 'DefaultGateway', None, _winreg.REG_MULTI_SZ, [GateWay])
_winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, ','.join(DNSServer))
except WindowsError:
print 'Set IP Error'
exit()
_winreg.CloseKey(hkey)
print '切换成功!重置网络后即可生效'
elif str(res) == '2':
try:
_winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000001)
_winreg.SetValueEx(hkey, 'T1', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'T2', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, None)
_winreg.SetValueEx(hkey, 'DhcpConnForceBroadcastFlag', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'Lease', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'LeaseObtainedTime', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'LeaseTerminatesTime', None, _winreg.REG_DWORD, 0x00000000)
except WindowsError:
print 'Set IP Error'
exit()
_winreg.CloseKey(hkey)
print '切换成功!重置网络后即可生效'
else:
print '用户手动取消,程序退出'
exit('')

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python中实现的RC4算法
Feb 14 Python
在Windows中设置Python环境变量的实例讲解
Apr 28 Python
python3对接mysql数据库实例详解
Apr 30 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
基于Python实现拆分和合并GIF动态图
Oct 22 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 Python
浅谈MySQL中的触发器
May 05 #Python
python去除所有html标签的方法
May 05 #Python
python实现将汉字转换成汉语拼音的库
May 05 #Python
python基于Tkinter库实现简单文本编辑器实例
May 05 #Python
python实现的简单窗口倒计时界面实例
May 05 #Python
给Python中的MySQLdb模块添加超时功能的教程
May 05 #Python
用Python实现一个简单的多线程TCP服务器的教程
May 05 #Python
You might like
PHP动态图像的创建
2006/10/09 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
理解Javascript_13_执行模型详解
2010/10/20 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
Python计算回文数的方法
2015/03/11 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
python for和else语句趣谈
2019/07/02 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
Python3 合并二叉树的实现
2019/09/30 Python
Python bytes string相互转换过程解析
2020/03/05 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
继电保护工岗位职责
2014/01/05 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
安全生产宣传标语
2014/06/06 职场文书
军训拉歌口号
2014/06/13 职场文书
通信工程求职信
2014/07/16 职场文书
咖啡店创业计划书
2014/08/15 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
欠款证明
2015/06/24 职场文书
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android