python 修改本地网络配置的方法


Posted in Python onAugust 14, 2019

本文主要说一下怎么使用Python来修改本地的ip和dns等,因为有本地的ip和dns都是随机获取的,有些时候不是很方便,需要修改,我就稍微的封装了一下,但是随机ip和网关、子网掩码等我都没有设置为参数,因为经常用也懒得改了,可以自己去修改一下。

测试的时候,在win8.1上面需要用管理员身份才能执行,win7似乎是不需要管理员身份的。

使用的Python库是WMI,这个是默认安装了的。如果没有去网上下载即可。

该说的都在注释里,就直接上代码了。

# -*- coding: utf-8 -*-
import os
import random
import re
from time import sleep
from wmi import WMI

#随机修改指定ip段的本机ip
class updateIP:
  def __init__(self):
    self.wmiService = WMI()
    #获取到本地有网卡信息
    self.colNicConfigs = self.wmiService.Win32_NetworkAdapterConfiguration(IPEnabled = True)
    #print self.colNicConfigs[0]
  def getAdapter(self):
    flag = 0
    #遍历所有网卡,找到要修改的那个,这里我是用原ip的第一段正则出来的
    for obj in self.colNicConfigs:
      ip = re.findall("10.\d+.\d+.\d+", obj.IPAddress[0])
      if len(ip) > 0:
        return flag
      else:
        flag = flag+1
  def runSet(self):
    adapter = self.colNicConfigs[self.getAdapter()]
    '''
    #检测ip是否在线,不可用,需登录
    while True:
      ip2 = random.choice(['216', '217'])
      ip3 = random.randint(1, 254)
      ip4 = random.randint(1, 254)
      newIP = '10.%s.%s.%s' % (ip2, ip3, ip4)
      if self.pingIP(newIP):
        break
    '''
    #随机选择了ip的第二段
    ip2 = random.choice(['216', '217'])
    ip3 = random.randint(1, 254)  #随机生成第三段和第二段的值
    ip4 = random.randint(1, 254)
    newIP = '10.%s.%s.%s' % (ip2, ip3, ip4)
    arrIPAddresses = [newIP]  #设置新的ip
    arrSubnetMasks = ['255.248.0.0']  #子网掩码
    arrDefaultGateways = ['10.223.255.254'] #网关
    arrGatewayCostMetrics = [1]   #这里要设置成1,代表非自动选择
    arrDNSServers = ['211.137.191.26']   #dns服务器
    #开始执行修改ip、子网掩码、网关
    ipRes = adapter.EnableStatic(IPAddress = arrIPAddresses, SubnetMask = arrSubnetMasks)
    if ipRes[0] == 0:
      print u'\ttip:设置IP成功'
      print u'\t当前ip:%s' % newIP
    else:
      if ipRes[0] == 1:
        print u'\ttip:设置IP成功,需要重启计算机!'
      else:
        print u'\ttip:修改IP失败: IP设置发生错误'
        return False
    #开始执行修改dns
    wayRes=adapter.SetGateways(DefaultIPGateway = arrDefaultGateways, GatewayCostMetric=arrGatewayCostMetrics)
    if wayRes[0] == 0:
      print u'\ttip:设置网关成功'
    else:
      print u'\ttip:修改网关失败: 网关设置发生错误'
      return False
    dnsRes = adapter.SetDNSServerSearchOrder(DNSServerSearchOrder=arrDNSServers)
    if dnsRes[0] == 0:
      print u'\ttip:设置DNS成功,等待3秒刷新缓存'
      sleep(3)
      #刷新DNS缓存使DNS生效
      os.system('ipconfig /flushdns')
    else:
      print u'\ttip:修改DNS失败: DNS设置发生错误'
      return False
'''
  //ping某ip看是否可以通
  def pingIP(self, ip):
    res = os.popen('ping -n 2 -w 1 %s' % ip).read() #内容返回到res
    res = res.decode('gbk')
    if u'请求超时' in res:     #注意乱码编码问题
       return False
    else:
      return True
'''
if __name__ == '__main__':
  update = updateIP()
  update.runSet()
  input()

以上这篇python 修改本地网络配置的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中实现定制类的特殊方法总结
Sep 28 Python
python实现简单温度转换的方法
Mar 13 Python
KMP算法精解及其Python版的代码示例
Jun 01 Python
win与linux系统中python requests 安装
Dec 04 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
Nov 30 Python
Python学生成绩管理系统简洁版
Apr 05 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
Django实现一对多表模型的跨表查询方法
Dec 18 Python
Python Web版语音合成实例详解
Jul 16 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
python django 原生sql 获取数据的例子
Aug 14 #Python
django 连接数据库 sqlite的例子
Aug 14 #Python
Python将主机名转换为IP地址的方法
Aug 14 #Python
Python利用WMI实现ping命令的例子
Aug 14 #Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 #Python
python for循环remove同一个list过程解析
Aug 14 #Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 #Python
You might like
PHP模板引擎SMARTY
2006/10/09 PHP
php将会员数据导入到ucenter的代码
2010/07/18 PHP
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
stripos函数知识点实例分享
2019/02/11 PHP
为指定元素增加样式的js代码
2009/12/09 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
JavaScript的arguments对象应用示例
2014/09/15 Javascript
JavaScript定义变量和变量优先级问题探讨
2014/10/11 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
2017/05/22 Javascript
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
在Python中使用判断语句和循环的教程
2015/04/25 Python
python常见数制转换实例分析
2015/05/09 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
Django 大文件下载实现过程解析
2019/08/01 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
放飞梦想演讲稿
2014/05/05 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
2014年国庆节寄语
2014/09/19 职场文书
实验心得体会范文
2016/01/25 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书