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 list转dict示例分享
Jan 28 Python
python中常用的各种数据库操作模块和连接实例
May 29 Python
Python中使用copy模块实现列表(list)拷贝
Apr 14 Python
Python 正则表达式入门(初级篇)
Dec 07 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 Python
Django工程的分层结构详解
Jul 18 Python
Python数据可视化:幂律分布实例详解
Dec 07 Python
python 链接sqlserver 写接口实例
Mar 11 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
Python headers请求头如何实现快速添加
Nov 03 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
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
js查找节点的方法小结
2015/01/13 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
ES6 javascript中class类的get与set用法实例分析
2017/10/30 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
Python实现的ini文件操作类分享
2014/11/20 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
wxpython绘制圆角窗体
2019/11/18 Python
利用Python优雅的登录校园网
2020/10/21 Python
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
大四学生毕业自荐信
2013/11/07 职场文书
活动总结怎么写啊
2014/05/07 职场文书
班主任工作实习计划
2015/01/16 职场文书
爱国电影观后感
2015/06/19 职场文书