做网站预付款是多少,wordpress 图片轮播,小广告图片,行业网站开发公司一、脚本编写思路
#xff08;一#xff09;针对设备型号
主要针对华为#xff08;Huawei#xff09;和华三#xff08;H3C#xff09;交换机设备的配置备份
#xff08;二#xff09;导出前预处理
1.在配置导出前#xff0c;自动打开crt软件或者MobaXterm软件一针对设备型号
主要针对华为Huawei和华三H3C交换机设备的配置备份
二导出前预处理
1.在配置导出前自动打开crt软件或者MobaXterm软件并自动登录交换机进行配置导出。 4.自动检测被导出交换机是否搭建ftp配置如果没有配置ftp服务自动完善ftp配置并自动完善交换机设备和电脑ftp配置文件的传输设备。 2.需要密码登录的交换机在桌面自动读取一个表格文档名称为【交换机设备信息表】的表格文件。 3.根据读取到的文档新建ssh会话输入文本的IP管理员账号和密码并自动登录设备。
三配置文件导出格式 1.将所有配置导出文件保存到桌面并新建一个文件夹名称为时间戳交换机 2.每个导出交换机配置名称保存为设备命名设备型号时间戳。 3.导出的同一设备配置文件格式必须同时包含TXT文本和cfg
二、函数依赖库
为了运行Python脚本需要确保已经安装了几个特定的Python库。这些库包括用于处理网络连接、文件操作和数据处理的工具。以下是必须安装的库列表及其用途
paramiko: 用于处理SSH连接和会话这对于与交换机进行通信非常重要。pandas: 用于读取和处理Excel文件中的数据这是从桌面读取设备信息的关键部分。openpyxl: 这不是脚本中直接提到的但它是pandas用于处理Excel文件的依赖库特别是.xlsx文件。socket: 这是标准库中的一部分用于获取本机IP地址通常不需要单独安装。
一安装步骤
你可以通过Python的包管理器pip来安装所需的库。在你的命令行工具中运行以下命令来安装这些库
pip install paramiko pandas openpyxl
这条命令会安装paramiko和pandas同时确保openpyxl也被安装使得pandas可以处理Excel文件。
二确保环境配置正确
在运行脚本之前还应确保你的Python环境配置正确特别是Python版本。这个脚本应该在Python 3.x环境中运行无误。你可以通过运行python --version或python3 --version取决于你的系统配置来检查你的Python版本。
三安装示例 四确保环境配置正确
在运行脚本之前还应确保你的Python环境配置正确特别是Python版本。这个脚本应该在Python 3.x环境中运行无误。你可以通过运行python --version或python3 --version取决于你的系统配置来检查你的Python版本。
如果你是在一个新的环境或虚拟环境中工作确保所有库都按需安装。这样可以避免影响系统中其他Python项目的依赖。
三、Python脚本
import paramiko # 导入paramiko库用于SSH连接
import pandas as pd # 导入pandas库处理Excel文件
import os # 导入os库进行文件系统操作
from datetime import datetime # 导入datetime库获取时间戳
import time # 导入time库用于暂停操作
import socket # 导入socket库用于获取本机IP地址# 读取设备信息表
def read_device_info():file_path os.path.join(os.path.expanduser(~), Desktop, 交换机设备信息表.xlsx) # 构造文件路径return pd.read_excel(file_path) # 使用pandas读取Excel文件并返回# 获取本机IP地址
def get_local_ip():s socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 创建UDP sockettry:s.connect((10.255.255.255, 1)) # 尝试连接到一个不存在的地址以获取本机IPIP s.getsockname()[0] # 获取成功后的本机IP地址except Exception:IP 127.0.0.1 # 如果获取失败使用本地回环地址finally:s.close() # 关闭socketreturn IP# 创建文件夹用于存放配置
def create_folder():timestamp datetime.now().strftime(%Y%m%d%H%M%S) # 获取当前时间戳folder_name f{timestamp}_交换机 # 定义文件夹名folder_path os.path.join(os.path.expanduser(~), Desktop, folder_name) # 定义完整路径os.makedirs(folder_path, exist_okTrue) # 创建文件夹如果存在则忽略return folder_path# 设置FTP服务
def setup_ftp(ssh, local_ip):commands [display ftp-server configuration\n, # 查看FTP服务器配置ftp server enable\n, # 启用FTP服务的命令fftp server acl permit source ip {local_ip}\n # 设置FTP服务的访问控制允许本机IP访问]ssh.send(commands[0]) # 发送第一个命令time.sleep(2) # 等待命令执行output ssh.recv(65535).decode(utf-8) # 读取输出if FTP server is not configured in output: # 如果FTP服务未配置for command in commands[1:]: # 遍历并执行剩余命令ssh.send(command)time.sleep(1)# 导出配置文件
def export_config(ip, username, password, device_info, folder_path):client paramiko.SSHClient() # 创建SSH客户端client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动接受新的SSH密钥client.connect(ip, usernameusername, passwordpassword) # 连接到设备local_ip get_local_ip() # 获取本机IP地址with client.invoke_shell() as ssh: # 开启一个新的SSH会话setup_ftp(ssh, local_ip) # 调用函数检查并配置FTPcommands [display current-configuration\n, save\n] # 定义配置备份命令for command in commands: # 循环发送命令ssh.send(command)time.sleep(5) # 等待命令执行output ssh.recv(65535).decode(utf-8) # 读取配置输出timestamp datetime.now().strftime(%Y%m%d%H%M%S) # 重新获取时间戳filename_base f{device_info[设备命名]}_{device_info[设备型号]}_{timestamp} # 构造文件名with open(os.path.join(folder_path, f{filename_base}.txt), w) as file_txt: # 保存为txt文件file_txt.write(output)with open(os.path.join(folder_path, f{filename_base}.cfg), w) as file_cfg: # 保存为cfg文件file_cfg.write(output)client.close() # 关闭SSH客户端# 主函数
def main():folder_path create_folder() # 创建文件夹device_info read_device_info() # 读取设备信息for index, row in device_info.iterrows(): # 遍历设备信息export_config(row[IP], row[管理员账号], row[密码], row, folder_path) # 导出配置if __name__ __main__:main() # 运行主函数