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连接MySQL、MongoDB、Redis、memcache等数据库的方法
Nov 15 Python
python3实现抓取网页资源的 N 种方法
May 02 Python
pandas重新生成索引的方法
Nov 06 Python
pytorch对可变长度序列的处理方法详解
Dec 08 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
Python代码注释规范代码实例解析
Aug 14 Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 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
PHPMyAdmin 快速配置方法
2009/05/11 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
Python中请不要再用re.compile了
2019/06/30 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
python 实现list或string按指定分段
2019/12/25 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
Python执行时间的几种计算方法
2020/07/31 Python
企事业单位求职者的自我评价
2013/12/28 职场文书
商务英语求职信范文
2015/03/19 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
爱国教育主题班会
2015/08/14 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
Python基础之元类详解
2021/04/29 Python
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
MySQL 四种连接和多表查询详解
2021/07/16 MySQL