个人没有系统学习过Python,编程能力也很烂,但是可以通过简单的程序来简化自己的工作量,脚本如下:
import paramiko import xlrd import time import random import os #定义连接SSH的过程 def SSH_Connect(ssh_host, ssh_hostname): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname=ssh_host, port=22, username='admin', password='admin@admin') # 使用交互式终端 channel = ssh.invoke_shell() time.sleep(1) channel.send('terminal length 0\nshow run' + '\n') # 这里等待时间为了让返回字符写入缓存中,根据配置量来进行设置 time.sleep(10) temp = channel.recv(120000).decode() # 这里调用另外一个过程,将缓存中的配置内容进行处理并保存 Get_Conf(temp, ssh_hostname) ssh.close() #本函数的功能,由于通过SSH获取下来的内容存在大量空行,需要进行格式化。 #由于不会在缓存阶段处理,索性先建立临时文件,然后读取临时文件进行格式化 #然后再进行写入相应的文件。 def Get_Conf(context, hostname): #随机生成1000-200000的数字作为临时文件名称 random_file=random.randrange(1000, 200000) f_path = r'./result_conf/' + hostname + '.log' f_path_temp = r'./result_conf/' + random_file f_temp = open(f_path_temp, 'w+') f_temp.write(context) f_temp.close() f_temp = open(f_path_temp, 'r') f = open(f_path, 'w+') for line in f_temp.readlines(): if line == '\n': line = line.strip('\n') f.write(line) f_temp.close() f.close() os.remove(f_path_temp) #初始过程,主要是从EXCEL表格中读取相应的IP地址和主机名 def Get_Info(): workbook = xlrd.open_workbook(r'./conf/conf.xlsx') sheet = workbook.sheet_by_name('conf') nrows = sheet.nrows for i in range(nrows-1): cell_hostname = sheet.cell(i+1, 0).value cell_ip = sheet.cell(i+1, 1).value print('正在执行:\t', cell_hostname, '\t', cell_ip) SSH_Connect(cell_ip, cell_hostname) Get_Info()