python 修改本地网络配置的方法

本文主要说一下怎么使用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 修改本地网络配置的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • PyCharm 配置远程python解释器和在本地修改服务器代码

    最近在学习机器学习的过程中,常常需要将本地写的代码传到GPU服务器中,然后在服务器上运行.之前的做法一直是先在本地写好代码,然后通过FileZilla这样的文件传输工具来将写好的文件传到服务器,再通过ssh工具远程连接到服务器,执行相应的python脚本.这样的方式十分繁琐,效率很低.今天听到朋友提到了配置远程解释器 使用场景 先说说自己的使用场景,我是在什么情况下,需要将IDE配置成这样的环境来方便我的工作. 首先,我需要在本地机子上写python代码,但是因为是机器学习相关的一些代码,有时候

  • 利用Python实现网络测试的脚本分享

    前言 最近同学让我帮忙写一个测试网络的工具.由于工作上的事情,断断续续地拖了很久才给出一个相对完整的版本.其实,我Python用的比较少,所以基本都是边查资料边写程序. 程序的主要逻辑如下: 读取一个excel文件中的ip列表,然后使用多线程调用ping统计每个ip的网络参数,最后把结果输出到excel文件中. 代码如下所示: #! /usr/bin/env python # -*- coding: UTF-8 -*- # File: pingtest_test.py # Date: 2008-

  • python 修改本地网络配置的方法

    本文主要说一下怎么使用Python来修改本地的ip和dns等,因为有本地的ip和dns都是随机获取的,有些时候不是很方便,需要修改,我就稍微的封装了一下,但是随机ip和网关.子网掩码等我都没有设置为参数,因为经常用也懒得改了,可以自己去修改一下. 测试的时候,在win8.1上面需要用管理员身份才能执行,win7似乎是不需要管理员身份的. 使用的Python库是WMI,这个是默认安装了的.如果没有去网上下载即可. 该说的都在注释里,就直接上代码了. # -*- coding: utf-8 -*-

  • CentOS7连接XShell与网络配置的方法

    1.Linux网络配置 在进行网络配置前,首先要获取本地的IPv4地址和默认网关等信息. 安装centOS7后使用setup命令,是没有网络配置选项的.要想进行网络配置,需要使用nmtui命令.进入如下界面. 使用键盘方向键选中第一项Edit a connection,回车进入编辑界面.CentOS7默认网卡名为eno16777736,选中Edit,回车. 然后将获取到的IPv4和默认网关信息添加到相应的位置.其中IPv4地址的前3个字段要一致,最后一个字段可以任意. 选中OK,一层一层的退回,

  • CentOS 6.5平台本地YUM配置的方法

    本文实例讲述了CentOS 6.5平台本地YUM配置的方法.分享给大家供大家参考,具体如下: 拷贝光盘下的/media/CentOS_6.5_Final/ 到目录/media/rhel/ 拷贝并且创建目录 cp -rf /media/CentOS_6.5_Final/ /media/rhel/ 赋予目录权限如果后期有问题就赋予权限 chmod -R 777 /media/rhel/ 查看目录/etc/yum.repos.d/ ls -l /etc/yum.repos.d/ total 16 -r

  • Gradle修改本地仓库的位置方法实现

    Gradle和Maven都是当前热门的自动化构建工具.使用Gradle去构建项目,由于没有办法像Maven一样配置Setting文件来修改本地库的位置,我们可以通过设置环境变量GRADLE_USER_HOME的路径来改变gradle的本地仓库的位置. 因为Gradle如果不配置环境变量,则会在用户目录下(在Windows下是C盘的目录)创建.gradle目录,并将下载的依赖文件保存在这个目录里. 如果不想使用缺省目录,则可以设置环境变量GRADLE_USER_HOME的路径,就可改变gradle

  • 详解QEMU网络配置的方法

    今天给大家介绍一下QEMU网络配置的方法. qemu两种上网方式: user mode network : 这种方式实现虚拟机上网很简单,类似vmware里的nat,qemu启动时加入-user-net参数,虚拟机里使用dhcp方式,即可与互联网通信,但是这种方式虚拟机与主机的通信不方便. tap/tun network : 这种方式要比user mode复杂一些,但是设置好后 虚拟机<-->互联网 虚拟机<-->主机 通信都很容易 这种方式设置上类似vmware的host-onl

  • python获取本地计算机名字的方法

    本文实例讲述了python获取本地计算机名字的方法.分享给大家供大家参考.具体如下: import sys, socket hostname = socket.gethostname() print "Host name:", hostname 希望本文所述对大家的Python程序设计有所帮助.

  • python+django+rest框架配置创建方法

    安装好所需要的插件和包: python.django.pip等版本如下: 采用Django REST框架3.0 1.在python文件夹下D:\python\Lib\site-packages\django\bin打开cmd命令工具,本人将python文件夹名字改为了wwj,请注意: mkdir tutorial cd tutorial virtualenv env source env/bin/activate pip install django pip install djangorest

  • Python 修改列表中的元素方法

    如下所示: #打印列表文件 def show_magicians(magics) : for magic in magics : print(magic) #修改列表文件 def make_great(magics) : length=len(magics) for a in range(1,length+1) : magics[a-1]='the Great'+magics[a-1] #输入信息 def input_name(magics) : n=input('请输入魔术师的个数 : ')

  • 利用python修改json文件的value方法

    做工程时遇到需要监听json文件,根据json文件中的key-value值作出相应处理的情形.为此写了修改json文件的python脚本供工程后续调用. 代码如下: # coding=utf-8 //设置文本格式 import os,sys import json def get_new_json(filepath,key,value): key_ = key.split(".") key_length = len(key_) with open(filepath, 'rb') as

  • centos修改docker网络配置方法分享

    在为客户使用docker运行php-fpm的时候,发现有的可以正常连接服务器,有的不可以.经过诊断发现客户端的ip网段和docker创建的默认docker0网卡网段冲突. docker0默认的网络一般都是172.17.0.1/24或192.168.0.1/24.如果客户端的ip是172.17.111.1,则这时候访问基于docker部署的应用的时候,会遇到网络问题. 解决的方案,有两种. 1:使用host模式运行docker,但是需要删除默认的docker0虚拟网卡.在下次docker daem

随机推荐