ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具,它支持 ipmi 1.5 规范(最新的规范为 ipmi 2.0),通过它可以实现获取传感器的信息、显示系统日志内容、网络远程开关机等功能

  1. 环境搭建

安装python:

在python官网下载安装文件,选择windows的安装包

安装过程可以直接加入path,也可以安装完后加上环境变量

安装ipmitool:

解压IPMItool.rar

加入环境变量中,如上图

在cmd查看python,ipmitool是否在path上:

2.代码

import os
for i in open(r'G:\My Documents\Desktop\ip.txt'):
odip=i.split("/")[0]
newip=i.split("/")[1]
gwip=i.split("/")[2]
USER=i.split("/")[3]
PASSWD=i.split("/")[4]
#os.system("ipmitool -I lanplus -H " + odip+" -U "+USER+" -P "+PASSWD+" lan set 3 netmask 255.255.254.0")
#os.system("ipmitool -I lanplus -H " + odip+" -U "+ USER+" -P "+PASSWD +" lan set 3 ipaddr "+ newip)
os.system("ipmitool -I lanplus -H " + newip+" -U"+ USER+" -P "+PASSWD +" lan set 3 defgw ipaddr "+ gwip)
#print(newip)
#print("ipmitool -I lanplus -H "+odip+" -U "+USER+" -P "+PASSWD+" lan set 1 netmask 255.255.254.0")
#print("ipmitool -I lanplus -H " + odip+" -U "+ USER+" -P "+PASSWD +" lan set 3 ipaddr "+ newip)

ip.txt文件形式:

odip1/newip1/gwip/PASSWD

odip2/newip2/gwip/PASSWD

......

4.成果截图:

设置掩码:

设置带外ip:

前一个执行是print(查看是否代码写的有误),后一个执行是修改带外ip

设置网关:

5.代码解析:

Python部分:

a.import导入模块

把import os导入模块放到开头,使作用域在全局中可以使用

b.Os模块: os模块就是对操作系统进行操作, 显示结果,os模块包含普遍的操作系统功能,与具体的平台无关

os.system():运行命令

>>>os.system('cmd')  #Windows下打开终端

c.split()函数:Python中有split()函数

拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)

语法:str.split(str="",num=string.count(str))[n]

参数说明:

str:表示为分隔符,默认为空格,但是不能为空('')。若字符串中没有分隔符,则把整个字符串作为列表的一个元素

num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量

[n]:表示选取第n个分片

Ipmitool部分:

ipmitool远程使用命令:

pmitool -H 192.168.180.201 -U root -P opendoor -I lan command 其中-H表示后面跟的是服务器的地址,-U表示后面跟着用户名,-P表示后面跟着用户密码,command与本地获取信息相同

-l lan:

不同厂商的设备对于信道不同,版本不同

Lan或lanplus,本地及用open

ipmitool命令需要通过相应的interface来访问BMC,在本地获取信息时候采用的是-I open,即为OpenIPMI接口,IPMItool命令包含的接口有open、lan、lanplus。其中open是指的是OpenIPMI与BMC通信,lan是通过Ethernet LAN request/resoponse消息,消息具有一个IPMI session头和RMCP头。采用IPV4的udp协议与BMC通信。UDP的数据段包含了IPMI 。IPMI使用Remote Management Control Protocol (RMCP) 版本1支持操作系统关闭(pre-OS和OS-absent),RMCP把把数据发送到UDP的623端口。像lan接口一样,lanplus同样使用Ethernet LAN的UDP协议与BMC通信,但是lanplus使用rmcp+协议(在IPMIV2.0中描述)来通信,RMCP+允许使用改经的认证方式和数据完整性检查。

Open端口用于本地监控系统使用的,lan/lanplus通过网络进行远程监控。

IP网络设置:

说明:[ChannelNo] 字段是可选的,不同厂商设备不同,可能为1或3

设置网络参数,必须首先设置IP为静态,然后再进行其他设置;

a. 查看网络信息:

ipmitool -H (BMC的管理IP地址) -I lanplus -U (BMC登录用户名) -P (BMC 登录用户名的密码) lan print [ChannelNo]

b. 修改IP为静态还是DHCP模式:

ipmitool -H (BMC的管理IP地址) -I lanplus -U (BMC登录用户名) -P (BMC 登录用户名的密码) lan set <ChannelNo> ipsrc <static/dhcp>

c. 修改IP地址:

ipmitool -H (BMC的管理IP地址) -I lanplus -U (BMC登录用户名) -P (BMC 登录用户名的密码) lan set <ChannelNo> ipaddr <IPAddress>

d. 修改子网掩码:

ipmitool -H (BMC的管理IP地址) -I lanplus -U (BMC登录用户名) -P (BMC 登录用户名的密码) lan set <ChannelNo> netmask <NetMask>

e. 修改默认网关:

ipmitool -H (BMC的管理IP地址) -I lanplus -U (BMC登录用户名) -P (BMC 登录用户名的密码) lan set <ChannelNo> defgw ipaddr <默认网关>

###注意

脚本执行时,可以用print打出要执行的ipmitool命令,确认windows环境下无中文及命令正确。期间可以用#来注释

该代码通过split截取ip.txt的旧带外地址odip,新地址newip等

如果执行过程很快,可以使用import time

在for循环外围使用time.sleep(10000)来看结果

bmc在ipmi基础上开发
ipmi版本: 中兴ipmi1.5  其他ipmi2
 惠普:lan set 2,华为:lan set 1 ,中兴:lan set 3

 
import os
import time
for i in open(r'c:\Users\Desktop\ip.txt'):
ip=i.split("/")[1]
newip=i.split("/")[2]
print(ip)
print(newip)
#print("echo " + ip + " >> C:\\Users\\Desktop\\sn.txt")
#os.system("echo " + ip + " >> C:\\Users\\Desktop\\sn.txt")
#hp惠普服务器
#print("ipmitool -I lanplus -H " + ip+" -U admin -P adminpasswd lan set 2 ipaddr "+ newip)
#os.system("ipmitool -I lanplus -H "+ ip + " -U admin -P adminpasswd fru | find \"Chassis Serial\" >> C:\\Users\\ffcs\\Desktop\\sn.txt")
#os.system("ipmitool -I lanplus -H "+ ip + " -U admin -P password fru | find \"Chassis Serial\" >> C:\\Users\\ffcs\\Desktop\\sn.txt")
#os.system("ipmitool -I lanplus -H " + ip+" -U admin -P adminpasswd lan set 2 netmask 255.255.254.0")
#os.system("ipmitool -I lanplus -H " + ip+" -U admin -P adminpasswd lan set 2 ipaddr "+ newip)
#os.system("ipmitool -I lanplus -H " + ip+" -U admin -P adminpasswd lan set 2 defgw ipaddr 10.241.40.1")
os.system("ipmitool -I lanplus -H "+ip+" -U admin -P adminpasswd mc reset cold")
#huawei服务器
#os.system("ipmitool -I lanplus -H "+ ip + " -U root -P Huawei12#$ fru | find \"Product Serial\" >> C:\\Users\\ffcs\\Desktop\\sn.txt")
#print("ipmitool -I lanplus -H " + ip+" -U root -P Huawei12#$ lan set 1 ipaddr "+ newip)
#os.system("ipmitool -I lanplus -H " + ip+" -U root -P Huawei12#$ lan set 1 netmask 255.255.254.0")
#os.system("ipmitool -I lanplus -H " + ip+" -U root -P Huawei12#$ lan set 1 ipaddr "+ newip)
time.sleep(100)

ipmitool+python应用处理大量带外地址的更多相关文章

  1. 服务器BMC(带外)

    服务器除了装linux,windows系统外,相应还有一个可通过网线(服务器默认带外地址--可改)连接具体厂商服务器的BMC(Baseboard Management Controller,基板管理控 ...

  2. TCP带外数据

    传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方.为了发送这些数据,协议一般不使用与普通数据相同 ...

  3. python实现的、带GUI界面电影票房数据可视化程序

    代码地址如下:http://www.demodashi.com/demo/14588.html 详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采 ...

  4. Python 实现的、带GUI界面的词云生成器

    代码地址如下:http://www.demodashi.com/demo/14233.html 详细说明: "词云"就是数据可视化的一种形式,给出一段文本,根据文本中词语的出现频率 ...

  5. mysql 带外注入

    带外通道 有时候注入发现并没有回显,也不能利用时间盲注,那么就可以利用带外通道,也就是利用其他协议或者渠道,如http请求.DNS解析.SMB服务等将数据带出. payload SELECT LOAD ...

  6. 利用DNS实现SQL注入带外查询(OOB)

    根据用于数据检索的传输信道,SQLi可分为三个独立的类别:inference(经典SQL注入),inband(盲注.推理注入.带内注入)和out-of-band 一.什么是OOB out-of-ban ...

  7. Windows下用Python 3.4+自带的venv模块创建虚拟环境

    Python 3.4+自带了venv模块,用于创建虚拟环境,每个虚拟环境都可以安装一套独立的第三方模块. 本文在Windows 10上操作. 1.创建一个虚拟环境: D:\>mkdir test ...

  8. 网络IPC:套接字之带外数据

    带外数据(Out-of-band data)是一些通信协议所支持的可选特征,允许更高优先级的数据比普通数据优先传输.即使传输队列已经有数据,带外数据先行传输.TCP支持带外数据,但是UDP不支持.套接 ...

  9. UNIX网络编程——带外数据小结

    TCP没有真正的带外数据,不过提供紧急模式和紧急指针.一旦发送端进入紧急模式,紧急指针就出现在发送到对端的分节中的TCP首部中.连接的对端收取该指针是在告知接收进程发送端已经进入紧急模式,而且该指针指 ...

随机推荐

  1. Common lang一些边界方法总结(好记性不如烂笔头,需要慢慢积累).一定要利用好现有的轮子,例如Apache common与Google Guava

    好记性真是不如烂笔头啊!!!! 如下代码: List<String> list = new ArrayList<String>(); list.add("1" ...

  2. 页面中php传值后循环列表js获取点击的id

    页面中php传值后循环列表js获取点击的id值进行js操作 <script type="text/javascript" src="__PUBLIC__/js/jq ...

  3. Spark项目之电商用户行为分析大数据平台之(三)大数据集群的搭建

    Zookeeper集群搭建 http://www.cnblogs.com/qingyunzong/p/8619184.html Hadoop集群搭建 http://www.cnblogs.com/qi ...

  4. TDD&BDD

    BDD行为驱动开发的一种敏捷开发技术 TDD测试驱动开发

  5. js_script

    使用 self.crawl 的 js_script 参数,在页面上执行一段脚本,实现[点击加载更多]的效果: def on_start(self): self.crawl('http://movie. ...

  6. 通过cgroup给docker的CPU和内存资源做限制

    1.cpu docker run -it --cpu-period=100000 --cpu-quota=2000 ubuntu /bin/bash 相当于只能使用20%的CPU 在每个100ms的时 ...

  7. ChromeExtension入门浅谈

    0.写在前面的话 朋友上班时每天好几个时段都有个客流信息需要汇报到微信里,都是照着网页上的数据手动填写,着实麻烦.所以给写了个简单的函数每次到控制台里去运行,但是体验也并不好,今天就花了一整天的时间鼓 ...

  8. [POI2007]旅游景点atr BZOJ1097

    分析: 我们可以考虑,因为我们必须经过这些节点,那么我们可以将它状压,并且我们因为可以重复走,只是要求停顿前后,不要求遍历前后,那么我们之间存一下点与点之间的最短路,之后每次转移一下就可以了. f[i ...

  9. R语言--输入输出

    基本输入输出 输入: readline, edit, fix 输出: print, cat 输出重定向 sink #基本输入输出 x=readline('请输入:') #读取输入,一行为一个字符串 x ...

  10. 2017-2018-1 20155320 嵌入式C语言——时钟

    2017-2018-1 20155320 嵌入式C语言--时钟 要求: 在作业本上完成附图作业,要认真看题目要求. 提交作业截图 作弊本学期成绩清零(有雷同的,不管是给别人传答案,还是找别人要答案都清 ...