Python 利用WMI 修改Windows的IP和DNS


javaWeb开发,经常线上线下切换,操作有点小麻烦,咂摸着就搞了个脚本。

先用easy_install安装pywin32和wmi(wmi依赖win32api)

参考别人的代码修改

#!/usr/bin/python2.7 
# -*- coding: gb2312 -*- 
'''
Created on 2013-10-11

@author: Daemon
'''
import sys
import wmi 
def developModel():#开发模式,切换DNS 
    wmiService = wmi.WMI ()
    colNicConfigs = wmiService.Win32_NetworkAdapterConfiguration(IPEnabled = True)
    if len(colNicConfigs) < 1:
        print "没有找到可用的网络适配器"
        exit()
    objNicConfig=colNicConfigs[0]
    arrDNSServers = ['192.168.1.1']
    returnValue =objNicConfig.SetDNSServerSearchOrder(DNSServerSearchOrder = arrDNSServers)
    if returnValue[0] == 0 :
        print "修改DNS成功"
    elif returnValue[0] == 1 :
        print "修改DNS成功"
    else:
        print "修改DNS失败"
def nonDevelopModel():#线上,自动获取DNS
    wmiService = wmi.WMI ()
    colNicConfigs = wmiService.Win32_NetworkAdapterConfiguration(IPEnabled = True)
    if len(colNicConfigs) < 1:
        print "没有找到可用的网络适配器"
        exit()
    objNicConfig=colNicConfigs[0]
    returnValue =objNicConfig.SetDNSServerSearchOrder()#这句不能少
    returnValue =objNicConfig.EnableDHCP()
    if returnValue[0] == 0 :
        print "修改DNS成功"
    elif returnValue[0] == 1 :
        print "修改DNS成功"
    else:
        print returnValue[0]
        print "修改DNS失败"
fh=open("C:\Windows\System32\drivers\etc\hosts","rb")#修改我的hosts里配置
lines=[]
flag=0
for i in fh.readlines():
    if i.find("#127.0.0.1")==0:#我的配置文件只有一个#127.0.0.1 www.XXXX.com 项目域名(当有多个时,此处会出bug)
        flag=1
        lines.append(i[1:])#去掉127前的#号
    elif i.find("127.0.0.1")==0:
        lines.append("#"+i)
        flag=0
    else:
        lines.append(i)
open("C:\Windows\System32\drivers\etc\hosts","wb").writelines(lines)

if flag==0:
    print "非开发模式"
    nonDevelopModel()
else:
    print "开发模式"
    developModel()
raw_input() 
    

最后转为exe :pyinstaller -F xxx.py;搞定收工。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM