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 08 Python
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
Aug 22 Python
详谈python read readline readlines的区别
Sep 22 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
Jan 17 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
python实现简单颜色识别程序
Feb 19 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
Apr 22 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
Python configparser模块应用过程解析
Aug 14 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 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下封装较好的数字分页方法
2010/11/23 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
javascript中的隐式调用
2018/02/10 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
Python with的用法
2014/08/22 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
python中列表的含义及用法
2020/05/26 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
电子商务自荐书范文
2014/01/04 职场文书
大学生表扬信范文
2014/01/09 职场文书
学校安全教育制度
2014/01/31 职场文书
优秀士兵先进事迹
2014/02/06 职场文书
入学申请自荐信范文
2014/02/26 职场文书
人事任命书范文
2014/06/04 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
react 项目中引入图片的几种方式
2021/06/02 Javascript
Python标准库pathlib操作目录和文件
2021/11/20 Python
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers