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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
简单讲解Python编程中namedtuple类的用法
Jun 21 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
Jun 05 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
Dec 03 Python
Django框架教程之正则表达式URL误区详解
Jan 28 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
python实现桌面气泡提示功能
Jul 29 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
Python基于execjs运行js过程解析
Nov 27 Python
Python解析微信dat文件的方法
Nov 30 Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 04 Python
python中字符串String及其常见操作指南(方法、函数)
Apr 06 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
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
php测试kafka项目示例
2020/02/06 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
工作需要写的一个js拖拽组件
2011/07/28 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
python实现巡检系统(solaris)示例
2014/04/02 Python
Python中字符串的格式化方法小结
2016/05/03 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
详解python常用命令行选项与环境变量
2020/02/20 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
手把手教你导入Go语言第三方库
2021/08/04 Golang