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 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
python实现跨文件全局变量的方法
Jul 07 Python
Python 正则表达式(转义问题)
Dec 15 Python
Python实现截屏的函数
Jul 26 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
python判断计算机是否有网络连接的实例
Dec 15 Python
Python for循环与range函数的使用详解
Mar 23 Python
python爬虫 模拟登录人人网过程解析
Jul 31 Python
python通过实例讲解反射机制
Oct 17 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
Python离线安装openpyxl模块的步骤
Mar 30 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下关于中英数字混排的字符串分割问题
2010/04/06 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
Python转码问题的解决方法
2008/10/07 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
python实现Decorator模式实例代码
2018/02/09 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
Python实现按中文排序的方法示例
2018/04/25 Python
python学生管理系统开发
2019/01/30 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
新加坡交友网站:be2新加坡
2019/04/10 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
体育专业自荐书
2014/05/29 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
上甘岭观后感
2015/06/10 职场文书
优秀员工演讲稿
2019/06/21 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL