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 相关文章推荐
TF-IDF与余弦相似性的应用(一) 自动提取关键词
Dec 21 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
详解python字节码
Feb 07 Python
python读取文件名称生成list的方法
Apr 27 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
基于python实现聊天室程序
Jul 27 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
Dec 05 Python
python基于SMTP协议发送邮件
May 31 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 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常用Stream函数集介绍
2013/06/24 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
PHP安全之register_globals的on和off的区别
2020/07/23 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
Maps Javascript
2007/01/22 Javascript
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
Python 常用string函数详解
2016/05/30 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
法国房车租赁网站:Yescapa
2019/08/26 全球购物
抽象类和接口的区别
2012/09/19 面试题
物理教学随笔感言
2014/02/22 职场文书
学生请假条格式
2014/04/11 职场文书
环卫工人节活动总结
2014/08/29 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
比较node.js和Deno
2021/04/27 Javascript