zoukankan      html  css  js  c++  java
  • 16进制ascii码转化为对应的字符,付ipmitool查询硬件信息

    最近工作需要在用ipmitool查询服务器硬件信息。ipmitool查询硬件信息

    比如电源,使用命令:

    获取PSU0信息:Ipmitool raw 0x3a 0x71 0x00:

    获取PSU1信息:Ipmitool raw 0x3a 0x71 0x01:

    但是得到的信息是这样的:

    完全没有可读性,这些数字是16进制的ascii,平时我们看到的ascii都是10进制的,0—255,这里转化成16进制了。

    想要知道对应的信息,刚开始想着要先把16进制转化为10进制,在转化成对应的ascii字符,网上找了之后发现完全没必要。

    方法一:python中有一个方法:decode ,该 方法允许以指定的编码格式解码字符串。可以这样如图:

    这样就能够把16进制转化成ascii了,具体用法百度吧。不过此方法因为有反斜杠,容易导致python的反斜杠陷阱。

    方法二:

    a='4d'

    binascii.a2b_hex(a)

    也能够转化成对应的字符。使用该方法前首先导入binascii模块:import binascii

     

    另外上面ipmi输出的信息对应表如下:

    位置(从0开始)

    长度

    数据格式

    文字描述

    实例解析

    第0位

    1

    16进制整数

    电源编号

    解析前:00

    - PSU0

    解析后:(01: PSU1)

    第2位

    1

    16进制整数

    电源状态

    00

    -正常

    第21-28位

    8

    字符串(ASCII)

    版本

    解析前:30 2e 32 35 30 00 00 00

    解析后:-0.250

    第29-44位

    16

    字符串(ASCII)

    电源型号

     44 50 53 2d 31 36 30 30

     41 42 2d 37 20 41 00 00

     

    -DPS-1600AB-7 A

    61-76

    16

    字符串(ASCII)

    SN序列号

     解析前:48 47 41 41 41 34 34 35

     30 30 30 30 33 34 00 00

    解析后:-HGAA1445000034

     

     

  • 相关阅读:
    Linux下绑定网卡的操作记录
    迭代器、生成器、装饰器
    python二模块之装饰器
    python实现 --工资管理系统
    投票接口压测
    Mysql exists和in
    Django处理一个请求的过程
    快速排序 Python实现
    宿主机访问ubuntu虚拟机内的Django应用,访问不到的解决办法
    四、Git分支管理
  • 原文地址:https://www.cnblogs.com/dadong616/p/5572101.html
Copyright © 2011-2022 走看看