import netmiko
from netmiko import ConnectHandler
import time
import os
import pandas as pd
today = time.strftime("%Y-%m-%d", time.localtime())
switch_with_authentication_issue = []
switch_not_reachable = []
show_cmd = 'terminal length 0\n' \
'show run\n' \
'show fan\n' \
'show env all\n'
disp_cmd = 'screen-length 0 temporary\n' \
'dis ver\n' \
'dis env\n' \
'dis cu\n'
def session(devlist):
try:
# list = line.split(",")
hostname = list[0]
devtype = list[1]
ip = list[2]
user = list[3]
devpwd = list[4]
# secret = list[5].replace('\n', '')
secret = list[5]
conn_s = ConnectHandler(device_type=devtype,
host=ip,
username=user,
password=devpwd,
secret=secret,
timeout=10,
conn_timeout=10
)
conn_s.enable()
time.sleep(1)
conn_n = ConnectHandler(device_type=devtype,
host=ip,
username=user,
password=devpwd,
)
# print(f'已成功登陸交換機(jī){hostname}')
if devtype == 'hp_comware':
output = conn_n.send_command_timing('screen-length disable\n dis cu ')
elif devtype == 'huawei_telnet':
# output = conn_n.send_command_timing('screen-length 0 temporary\n dis cu')
output = conn_n.send_command_timing(disp_cmd)
elif devtype == 'juniper_junos':
output = conn_s.send_command_timing('show configuration | display set | no-more')
elif devtype == 'cisco_ios_telnet':
# output = conn.send_command_timing('\n terminal length 0 \n show running-config \n show ver \n show env all')
output = conn_s.send_command_timing(show_cmd)
conn_s.disconnect()
conn_n.disconnect()
logname = "E:/Python/python_Shell/" + today + "/" + hostname + "_" + today + ".log"
time.sleep(2)
try:
os.mkdir("E:/Python/python_Shell/" + today + "/")
except OSError:
pass
wr = open(logname, 'a' or 'w')
wr.write(output)
wr.close()
except netmiko.NetmikoAuthenticationException:
# print(hostname + " 用戶驗證失敗!")
switch_with_authentication_issue.append(ip)
except netmiko.ssh_exception.NetmikoTimeoutException:
# print(ip + " ?標(biāo)不可達(dá)!")
switch_not_reachable.append(ip)
except Exception as e:
print(e, ip)
# devlist = open('E:/Python/python_Shell/device_pwd.txt', 'r')
devlist = pd.read_excel('E:/Python/python_Shell/devlist.xlsx')
for list in devlist.values:
session(list)
for i in switch_with_authentication_issue:
print("鑒權(quán)失敗: "f"{i}")
for i in switch_not_reachable:
print("不可達(dá)設(shè)備: "f"{i}")