Python获取HP服务器状态信息
需求:
作为一名系统管理员,每天的巡检必不可少,一般日常巡检包括机房空调,消防,电力,温湿度,还有服务器网络设备等。
一般而言,服务器设备的物理巡检包括检查状态告警等,硬盘,网络,电源等。这些在HP ILO中都可以看到,包括Dell iDRAC,IBM IMM等,其实功能都是一样的,都是利用了IPMI或者RESTful.
在ILO中,可以看到服务器状态如下:
通过这些数据,基本上可以判断一台服务器是否正常工作。那么,如果是多台服务器,就是要检查多台ILO的状态了。
如果一台台的人工检查,将要花费大量的时间巡检。幸运的是,HP给我们提供了Python Class- hpilo. 通过这个包,可以实现自动化登录并获取系统状态。
实现方法:
- 安装python hpilo
Pip install hpilo #如果安装速度慢的话,请指定国内镜像站
- 执行如下代码
import hpilo #导入包
ilo=hpilo.Ilo('192.*.*.*,'Administrator','3NWC5ZK5') #通过脚本登录ILO
health_summary=ilo.get_embedded_health()['health_at_a_glance'] #获取system health的具体参数
print(health_summary)
print(type(health_summary))
- 返回结果如下:
{'bios_hardware': {'status': 'OK'}, 'fans': {'status': 'OK', 'redundancy': 'Redundant'}, 'temperature': {'status': 'OK'}, 'power_supplies': {'status': 'OK', 'redundancy': 'Redundant'}, 'processor': {'status': 'OK'}, 'memory': {'status': 'OK'}, 'network': {'status': 'Link Down'}, 'storage': {'status': 'OK'}}
这是一个dict类型的数组
- 多台服务器的话,可以把相关服务器信息放在文本文件中,然后进行循环查询,并保存在指定路径,比如可以保存在sqlite中。
- 老规矩,设置定时报表,然后把相关信息发送给指定人员,通过这样的方式,基本上可以大大减轻系统管理员的巡检负担。
注意:在ILO登录过程中,会出现如下错误
SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure
排错步骤如下:
- 登录web ILO,
- 切换到“Administration” -> “Security” -> “Encryption” 启用Enforce AES/3DES Encryption
ILO4 HP DL380 G8 亲测有效,欢迎测试。