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 18 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
python学生信息管理系统(初级版)
Oct 17 Python
python3的print()函数的用法图文讲解
Jul 16 Python
python super的使用方法及实例详解
Sep 25 Python
Django中提示消息messages的设置方式
Nov 15 Python
如何将 awk 脚本移植到 Python
Dec 09 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
大数据分析用java还是Python
Jul 06 Python
python时间序列数据转为timestamp格式的方法
Aug 03 Python
python中round函数保留两位小数的方法
Dec 04 Python
python os.listdir()乱码解决方案
Jan 31 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
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
php之CodeIgniter学习笔记
2013/06/17 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
List Installed Software Features
2007/06/11 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
Python实现修改IE注册表功能示例
2018/05/10 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
python 伯努利分布详解
2020/02/25 Python
Python通过文本和图片生成词云图
2020/05/21 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
python高级特性简介
2020/08/13 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
大学校园活动策划书
2014/02/04 职场文书
中学生操行评语大全
2014/04/24 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
具结保证书
2015/01/17 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
成事在人观后感
2015/06/16 职场文书
Mysql 如何查询时间段交集
2021/06/08 MySQL
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL