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实现根据指定端口探测服务器/模块部署的方法
Aug 25 Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
详解Python 协程的详细用法使用和例子
Jun 15 Python
朴素贝叶斯Python实例及解析
Nov 19 Python
详解Python3中setuptools、Pip安装教程
Jun 18 Python
python元组和字典的内建函数实例详解
Oct 22 Python
基于Django统计博客文章阅读量
Oct 29 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
python爬取代理ip的示例
Dec 18 Python
python opencv检测直线 cv2.HoughLinesP的实现
Jun 18 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面向对象的使用教程 简单数据库连接
2006/11/25 PHP
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
nodejs实用示例 缩址还原
2010/12/28 NodeJs
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
初三政治教学反思
2014/01/30 职场文书
志愿者活动总结范文
2014/04/26 职场文书
网站推广策划方案
2014/06/04 职场文书
优秀员工评优方案
2014/06/13 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA