通过python修改本地ip
写在前面,
1 对于个人公司需要固定ip,而回家需要用到家里的ip,
2对于公司it人员,每台电脑都需要设置ip,,尤其批量的时候,这个作为it的自己知道
3运维人员,可以通过ip测试哪些ip可以用,哪些不可以用
准备
拥戴wmi库通过pip install 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修改本地ip的更多相关文章
- 在Win10中手动添加/修改本地IP
1 前言 好久没动Win10了... 今天需要用Win10做一下实验,手动修改IP,于是写下了这篇文章作为过程记录. 2 概述 Win10里面修改本地IP不是一件特别困难的事,简单来说可以分为两种方式 ...
- python获取本地ip地址的方法
#_*_coding:utf8_*_ #以下两种方法可以在ubuntu下或者windows下获得本地的IP地址 import socket # 方法一 localIP = socket.gethost ...
- 修改 本地 IP 及 正则表达式 test exec match 的区别
修改 IP 1.打开 "打开网络和共享中心" 2.打开 "更改适配器设置" 3.打开 "本地连接" 属性 4.修改 "协议版本 4 ...
- 一个自动修改本地IP地址的BAT
set /a num1=%random%%%200+1+1 //生成随机数set ip=192.168.1.//ip 主体set ip1=%ip%%num1% //拼接两部分cmd /c netsh ...
- [python网络编程]使用scapy修改源IP发送请求
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...
- 本地连接图标消失;修改地址IP地址
(1)网络连接中没有本地连接,电脑无法进行拨号.无法上网,右键点击“网上连接”选择“属性”,弹出的“网络连接”文件夹中没有本地连接的图标,类似情况处理起来要相对复杂些了,我们逐一判断故障原因,在想办法 ...
- python获取公网ip,本地ip及所在国家城市等相关信息收藏
python获取公网ip的几种方式 from urllib2 import urlopen my_ip = urlopen('http://ip.42.pl/raw').read() ...
- Python 创建本地服务器环境生成二维码
一. 需求 公司要做一个H5手机端适配页面,因技术问题所以H5是外包的,每次前端给我们源码,我们把源码传到服务器让其他人访问看是否存在bug,这个不是很麻烦吗?有人说,可以让前端在他们的服务器上先托管 ...
- Tomcat在局域网中localhost可以访问,但是无法通过本地ip访问,127.0.0.1也无法访问问题的解决方法
环境:Tomcat6,Windows Server2008 R2, Tomcat使用默认端口8080. 在BO服务器上使用Tomcat6作为WEB服务器,在服务器本地使用http://localhos ...
- python局域网alive ip侦听
python局域网alive ip侦听 作者:vpoet mails:vpoet_sir@163.com 注:写着玩,欢迎copy # -*- coding: cp936 -*- # coding = ...
随机推荐
- 20200926--图像旋转(奥赛一本通P96 9 多维数组)
输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入:第1行包含两个整数n和m(1<=n<=100,1<=m<=100),表示图像包含像素点的行数和列数. 接下来n行 ...
- React中的CSS模块
CSS模块 使用步骤: 1.新建一个XXX.moudle.css文件 2.在组件中引入css impor classes(变量) fro ...
- PR2022(Premiere Pro 2022)Mac/win最新中文版
Adobe Premiere Pro 2022 Mac/win是用于专业级别的视频编辑软件,一个基于时间轴的视频处理工具,具有许多用于生成高端视频的不同功能.Adobe Premiere Pro最重要 ...
- 转型.netCore开发 记录日常问题
1.页面问题 asp-for date字段页面显示时间为"yyyy-MM-dd"类型通过@{}来处理,定义常量,将处理后的值赋值给常量,再通过@常量正常赋值例:@{ var beg ...
- vue 高级部分
props的其它内容 props的作用就是用于在子组件中接收传入的数据 props的使用方式 1.数组 props:['name'] 2.对象,指定传入变量的类型 props:{name:Number ...
- Spring Boot基础依赖
<properties> <java.version>1.8</java.version></properties><parent> < ...
- 微信小程序地理定位和城市选择列表
1.先获取用户是否授权地理定位,如果没有让其跳转到设置页面手动开启(获取到的位置是经纬度,需要借助其他地图SDK的地址逆解析获取省市区的名字) getSetting() { wx.getSetting ...
- rust-must-know-crates-5ad8 100DayOfRust
https://dev.to/cad97/rust-must-know-crates-5ad8 https://dev.to/search?q=100DayOfRust https://fastert ...
- SQL Server链接数据库
有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上的数据,要想完成这些操作,我们首要的是创建数据库链接. 数据库链接能够让本地的一个s ...
- Asp.net MVC5中没有BundleConfig.cs-MVC学习笔记(一)
创建ASP.NET MVC5项目时,选择了空项目,在App_Start文件夹中没有默认创建了BudleConfig.cs文件. 下面就来手动添加 在NuGet中搜索Microsoft.AspNet.W ...