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 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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM