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提取字典key列表的方法
Jul 11 Python
Python彩色化Linux的命令行终端界面的代码实例分享
Jul 02 Python
Scrapy的简单使用教程
Oct 24 Python
Django中login_required装饰器的深入介绍
Nov 24 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
使用python判断你是青少年还是老年人
Nov 29 Python
解决python给列表里添加字典时被最后一个覆盖的问题
Jan 21 Python
对python中的try、except、finally 执行顺序详解
Feb 18 Python
Python closure闭包解释及其注意点详解
Aug 28 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 Python
Python开发五子棋小游戏
May 02 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模块化安装教程
2016/06/01 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
jquery.validate使用详解
2016/06/02 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
Django model序列化为json的方法示例
2018/10/16 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
Python阶乘求和的代码详解
2020/02/14 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
白莲教口号
2014/06/18 职场文书
小学语文教研活动总结
2014/07/01 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
先进基层党组织材料
2014/12/25 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
详解如何使用Nginx解决跨域问题
2022/05/06 Servers