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 相关文章推荐
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
Apr 09 Python
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
Jun 18 Python
python optparse模块使用实例
Apr 09 Python
python设计模式大全
Jun 27 Python
Python实现的手机号归属地相关信息查询功能示例
Jun 08 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
Python使用flask框架操作sqlite3的两种方式
Jan 31 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
python requests证书问题解决
Sep 05 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
浅谈TensorFlow之稀疏张量表示
Jun 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
ThinkPHP采用模块和操作分析
2011/04/18 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
移动web开发之touch事件实例详解
2018/01/17 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
详解jenkins自动化部署vue
2019/05/14 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
制冷与电控专业应届生求职信
2013/11/11 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
2014年内勤工作总结
2014/11/24 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
php访问对象中的成员的实例方法
2021/11/17 PHP
redis缓存存储Session原理机制
2021/11/20 Redis
人民币符号
2022/02/17 杂记