博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python代码小实践之dorm_lab_changeIP
阅读量:5033 次
发布时间:2019-06-12

本文共 1791 字,大约阅读时间需要 5 分钟。

为了方便能在寝室和实验室之间往返后更改电脑ip,参考了blogjava中 的文章,并添加了测试网络连接小功能。用py2exe打包为exe文件。创建快捷方式,然后以管理员身份运行(这个很重要,要不然ip改不了)。
 
# -*- coding: cp936 -*-
import wmi
import urllib2
 
IPV4_25 = {'arrIPAddresses':['10.110.87.19'], 'arrSubnetMasks':['255.255.255.0'],
           'arrDefaultGateways':['10.110.87.1'], 'arrGatewayCostMetrics':[1],
           'arrDNSServers':['10.10.0.21',]}
IPV4_CAOZHU = {'arrIPAddresses':['10.214.26.129'], 'arrSubnetMasks':['255.0.0.0'],
           'arrDefaultGateways':['10.214.26.1'], 'arrGatewayCostMetrics':[1],
           'arrDNSServers':['10.10.0.21',]}
 
def connect_and_test(objNicConfig, ipv4):
    return_value = objNicConfig.EnableStatic(
        IPAddress = ipv4['arrIPAddresses'],
        SubnetMask = ipv4['arrSubnetMasks']
        )
 
    '''
    These can be used for test, and work well with the under methods.
    if returnValue[0] == 0:    #0 means success and no reboot is required
        print '  成功设置IP'
    elif returnValue[0] == 1:  #1 means success and reboot is required
        print '  成功设置IP'
        intReboot += 1
    else:                      #other results means failure.
        print '修改IP失败(IP设置发生错误)'
    exit()
    '''
    return_value = objNicConfig.SetGateways(
        DefaultIPGateway = ipv4['arrDefaultGateways'],
        GatewayCostMetric = ipv4['arrGatewayCostMetrics']
        )
    
    return_value = objNicConfig.SetDNSServerSearchOrder(
        DNSServerSearchOrder = ipv4['arrDNSServers']
        )
    #此处设备超时时间,因为目测网络连接消耗时间有几秒。没有作进一步的时间分析测试。
    try:
        urllib2.urlopen('http://www.cc98.org', timeout=5)
    except urllib2.URLError:
        return False
    return True
def main():
    wmiService = wmi.WMI()
    colNicConfigs = wmiService.Win32_NetworkAdapterConfiguration(IPEnabled=True)
    if len(colNicConfigs)<1:
        print '没有找到合适的网络适配器'
        exit()
    objNicConfig = colNicConfigs[0]
    if connect_and_test(objNicConfig, IPV4_CAOZHU):
        exit()
    else:
        connect_and_test(objNicConfig, IPV4_25)
 
if __name__ == '__main__':
    main()

转载于:https://www.cnblogs.com/haoqingchuan/archive/2012/08/09/2629935.html

你可能感兴趣的文章
luogu4012 深海机器人问题 网络流
查看>>
android 拍照上传照片
查看>>
ArchLinux安装开源VMware Tools
查看>>
系统用户分析模型
查看>>
DB2 锁升级示例1
查看>>
16.RDD实战
查看>>
MainFrame知识小结(20120210)—dfsort/syncsort中的数据类型
查看>>
jsp题库 (一)小测(25/21)
查看>>
D - Flip tile
查看>>
Java连接RabbitMQ之创建连接
查看>>
开户vim编程之--cscope支持
查看>>
python数据类型图解
查看>>
C#微信登录-手机网站APP应用
查看>>
HTML5实践 -- iPhone Safari Viewport Scaling Bug
查看>>
一位数据挖掘成功人士 给 数据挖掘在读研究生 的建议
查看>>
Python3.6.0安装
查看>>
hdu1049
查看>>
H5项目常见问题及注意事项
查看>>
索尼(SONY) SVE1512S7C 把WIN8降成WIN7图文教程
查看>>
时间模块 && time datetime
查看>>