zoukankan      html  css  js  c++  java
  • ipmitool+python应用处理大量带外地址

     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 DocumentsDesktopip.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:UsersDesktopip.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)
  • 相关阅读:
    Developers’ Musthave: the new Microsoft AllInOne Code Framework Sample Browser and 3500+ samples
    8774
    DCOM
    9个最棒的代码片段资源网站
    WCF中的几种地址总结
    如何用C#编写DCOM服务器
    C++ DCOM服务器和C#客户端互操作完全解释
    理解Prism中MVVM的Command与CommandParameter
    WCF REST 基础教程
    细说ASP.NET Forms身份认证
  • 原文地址:https://www.cnblogs.com/lianyg/p/10237657.html
Copyright © 2011-2022 走看看