from napalm import get_network_driver
import re
import datetime
class huaweidriver(object):
def __init__(self, host, Username, Password):
self.host = host
self.username = Username
self.password = Password
self.driver, self.sw, self.log = None, None, ""
def start(self):
self.driver = get_network_driver('huawei_vrp')
self.sw = self.driver(self.host, self.username, self.password)
self.sw.open()
def run(self):
self.commands = ["display device manufacture-info", "display clock", "display version ", "display device",
"display cpu-usage", "display cpu history", "display memory", "display interface"
, "dis current-configuration inter", "display ip interface", "display saved-configuration",
"display logbuffer", "display stp active", "display stp brief ", "display stp abnormal ",
"dis temperature all",
"dis alarm information"]
self.cli_output = self.sw.cli(self.commands)
# print(manufacture_info)
# manufacture_info_json=json.dumps(manufacture_info,indent=2,ensure_ascii=False,sort_keys=True)
self.log += datetime.datetime.now().__str__() + "\n"
for line in self.cli_output:
print("******************+" + line + "********************************")
self.log += "******************+" + line + "********************************"
print(self.cli_output[line])
self.log += self.cli_output[line]
# print(manufacture_info_json)
# 获取设备序列号 启动日期
def get_device_manufacture_info(self):
isrun = False
for line in self.cli_output:
if "manufacture-info" in line:
temp = self.cli_output[line]
# print(temp)
temps = str(temp).split(" ")
self.Serial_number = temps[-1]
self.Manu_date = temps[-2]
isrun = True
if isrun == False:
print("命令列表里没有 display device manufacture-info")
# 获取系统时区
def get_clock(self):
isrun = False
for line in self.cli_output:
if "clock" in line:
temp = self.cli_output[line]
# print(temp)
temp = str(temp).replace("\r", " ").replace("\n", " ")
self.Clock = temp
isrun = True
if isrun == False:
print("命令列表里没有 display clock")
# 获取系统运行时间 版本信息
def get_version(self):
isrun = False
for line in self.cli_output:
if "version" in line:
temp = self.cli_output[line]
# print(temp)
match = re.search("Version.*", temp)
if match is not None:
# print(match.group(0))
temp = match.group(0)
self.Version = temp
match = re.search("uptime.*", temp)
if match is not None:
# print(match.group(0))
temp = match.group(0)
self.Uptime = temp
isrun = True
if isrun == False:
print("命令列表里没有 display version")
# 获取系统电源状况
def get_device(self):
isrun = False
for line in self.cli_output:
if "device" in line:
temp = self.cli_output[line]
# print(temp)
temps = str(temp).split(" ")
self.Role = temps[-1]
self.Status = temps[-2]
self.Register = temps[-3]
self.Power = temps[-4]
self.Online = temps[-5]
self.Type = temps[-6]
isrun = True
if isrun == False:
print("命令列表里没有 display device")
# 获取系统内存容量
def get_memory(self):
isrun = False
for line in self.cli_output:
if "memory" in line:
temp = self.cli_output[line]
# print(temp)
match = re.search("\d*%", temp)
if match is not None:
# print(match.group(0))
temp = match.group(0)
self.memory = temp
isrun = True
if isrun == False:
print("命令列表里没有 display memory")
# 获取cpu是使用频率
def get_cpu_usage(self):
isrun = False
for line in self.cli_output:
if "cpu-usage" in line:
temp = self.cli_output[line]
# print(temp)
match = re.search("CPU Usage.*Max.*", temp)
if match is not None:
# print(match.group(0))
temp = match.group(0)
self.cpu_usage = temp
isrun = True
if isrun == False:
print("命令列表里没有 display cpu-usage")
# 获取系统当前温度与状态
def get_temperature(self):
isrun = False
for line in self.cli_output:
if "temperature" in line:
temp = self.cli_output[line]
# print(temp)
temps = str(temp).split(" ")
self.Current_temperature = temps[-5]
self.temperature_Status = temps[-6]
isrun = True
if isrun == False:
print("命令列表里没有 display temperature ")
def show(self):
print(self.temperature_Status)
print(self.Status)
print(self.Clock)
print(self.cpu_usage)
print(self.memory)
print(self.Current_temperature)
print(self.Uptime)
print(self.Type)
print(self.Manu_date)
def save(self):
with open("huawei_vrp.txt", "w") as o:
o.write(self.log)
if __name__ == '__main__':
host = []
huaweidriver = huaweidriver("192.168.99.212", "admin", "admin@huawei")
huaweidriver.start()
huaweidriver.run()
huaweidriver.save()
# huaweidriver.get_device_manufacture_info()
# huaweidriver.get_clock()
# huaweidriver.get_version()
# huaweidriver.get_device()
# huaweidriver.get_cpu_usage()
# huaweidriver.get_memory()
# huaweidriver.get_temperature()
#
# # huaweidriver.show()