曙光I1620G30获取设备的cpu、内存、存储等参数信息。
admin
2023-02-23 07:00:06
0

曙光I1620G30获取设备的cpu、内存、存储等参数信息。原本打算使用redfish协议获取信息,无奈厂家说暂时不支持,只好使用restfull协议获取信息。

import requests
requests.packages.urllib3.disable_warnings()

class GetHostInfo(object):
    def __init__(self,ipaddr,username,password):
        self.username=username
        self.password=password
        self.URLprefix='http://' + ipaddr.strip()
        global token    ##同时存在4-5个token链接,每个token链接时间为5分钟,可以自己设置。
        global cookie
        token=0
        cookie=0
        tokenurl=self.URLprefix+'/api/session'
        print(tokenurl)
        data={
            "username":self.username,
            "password":self.password
            }
        re1=requests.post(tokenurl,data=data,verify=False)
        print (re1.status_code)
        if re1.status_code == 200:
            #print (re1.json())
            # print(re1.status_code)
            # print(re1.json())
            # print('header:', re1.headers)
            # temp = re1.json()
            # print(temp['CSRFToken'])
            #print(re1.headers)
            #print (re1.json())
            temp_header=re1.headers
            cookie=temp_header['Set-Cookie']
            temp_token=re1.json()
            token=temp_token['CSRFToken']
            print (cookie)
            print (token)
        else:
            pass
    def GetInfo(self,URL_suffix):  #定义总获取函数,传参url的后半部分。如'/api/system1/memory'
        urlset=self.URLprefix + URL_suffix.strip()
        #print(urlset)
        # print ('token:',token)
        # print ('cookie:',cookie)
        if cookie != 0  and token != 0 :
            header = {
                "Content-Type":"application/json,text/javascript",
                'X-Requested-With':'XMLHttpRequest',
                "X-CSRFTOKEN":token,
                "Cookie":cookie
                }
            re1=requests.get(urlset,headers=header,verify=False)
            print(re1.status_code)
            return (re1.json())
        else:
            pass

def Collect_Info(ipaddr,username,password):
    SuGon=GetHostInfo(ipaddr,username,password)
    ####处理CPU
    select_cpu_total = '/api/serverrepo/cpus'
    #print('cpu_total', SuGon.GetInfo(select_cpu_total))
    temp_cpu_result1= SuGon.GetInfo(select_cpu_total)
    if isinstance(temp_cpu_result1,list) :
        cpu_count = len(temp_cpu_result1)
        print('@' * 50)
        print('CPU Count:', cpu_count)
        for cpu_single in temp_cpu_result1:
            if isinstance(cpu_single, dict):
                print('CPU single name:',cpu_single['Location'])
                print('CPU single ID:',cpu_single['id'])
                print('CPU single TotalCores(cpus):', cpu_single['CoreThread'])
                print('CPU single Model(cpus):', cpu_single['BrandName'])
    ####处理内存
    select_mem_total = '/api/serverrepo/mems'
    # print('mem_total', SuGon.GetInfo(select_mem_total))
    temp_mem_result1 = SuGon.GetInfo(select_mem_total)
    memory_count=0
    if isinstance(temp_mem_result1, list):
        mem_count = len(temp_mem_result1)
        print('@' * 50)
        print('Memory Count(exist):', mem_count)
        for mem_single in temp_mem_result1:
            if isinstance(mem_single, dict):
                Memory_Size = mem_single['Size']
                #print ('Memory_Size AAAAA',Memory_Size)
                if Memory_Size:
                    memory_count+=1
                    print('Memory name:', mem_single['Location'])
                    print('Memory ID:', mem_single['id'])
                    print('Memory Size:', Memory_Size)
                    print('Memory Type:', mem_single['DimmType'])
                else:
                    pass
    print('Memory Count(alive):', memory_count)
    ####处理存储,无raid的查询
    select_storage_total = '/api/serverrepo/hdds'
    # print('storage_total', SuGon.GetInfo(select_storage_total))
    temp_storage_result1 = SuGon.GetInfo(select_storage_total)
    if isinstance(temp_storage_result1, list):
        mem_count = len(temp_storage_result1)
        print('@' * 50)
        print('Storage Count:', mem_count)
        for storage_single in temp_storage_result1:
            if isinstance(storage_single, dict):
                print('Storage name:', storage_single['Location'])
                print('Storage ID:', storage_single['id'])
                print('Storage Size:', storage_single['Size'])
                print('Storage Type:', storage_single['Mode'])
    ##处理日志
    selecteventlog = '/api/logs/eventlog'  ##post
    selectselinfo = '/api/logs/selinfo'  ##get
    print('selectselinfo', SuGon.GetInfo(selectselinfo))
    print('selecteventlog', SuGon.GetInfo(selecteventlog))

if __name__ == '__main__':
    Collect_Info('10.249.177.29', username', 'password')

相关内容

热门资讯

“直-20家族”全亮相 近日,在陆军某旅直升机分队演训中,直-20与直-20T表现亮眼。075型两栖攻击舰日前也搭载直-20...
蒋万安借“725上凯道”成蓝营... 中国国民党25日将于台北凯道举办“我是人,我反毒台”集会,向民进党当局抗议中联毒油案。对此,资深媒体...
波轮式全自动洗衣机脱水时波轮转 波轮式全自动洗衣机脱水时波轮转1、衣物放置不平导致;2、排水系统发生阻塞。3、顶部的安全开关损坏;4...
洗衣机不出水怎么查原因 当洗衣机不出水时,一定是出了问题。下面就是一些可能的原因及其解决方法:1. 电源问题洗衣机不能正常工...
半自动洗衣机放不出水是什么原因... 1、检查过滤网是否堵塞。若堵塞了需要将脏东西取出来,然后再用清水将过滤网清洗干净。2、检查一下是不是...
全自动洗衣机不出水是什么原因 1、进水口的滤网被水中的杂质堵住。2、控制板上的进水继电器坏了。3、电路故障,进水电磁阀有故障或者插...
抽油烟机只通电不转怎么回事 只通电不转的故障原因和解决方法:1、电容量减小或损坏。解决方法:抽油烟机电机不转,还有嗡嗡声,一般是...
谷歌被罚9亿欧元后,特朗普称欧... 当地时间7月23日,欧盟委员会指控美国谷歌公司违反欧盟《数字市场法》,对其处以8.9亿欧元罚款。这一...
14对14,中国反击欧盟,干净... 对于欧盟的指手画脚,中国第一时间反击了。14:14。干净利落,来而不往非礼也。国际博弈,从来如此:没...
风未到,人已行!凌晨不眠!一场... 7月24日晚,台风“红霞”持续逼近,市应急管理局五楼会议室灯火通明,市应急管理局党委书记、局长李见秋...