import paramiko
import time
def backup_config(hostname, username, password, port=22, local_path=''):
try:
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname, port=port, username=username, password=password)
# 执行获取配置命令
stdin, stdout, stderr = ssh.exec_command('display current-configuration')
# 获取命令输出
config = stdout.read()
# 如果提供了本地路径,将配置备份到本地文件
if local_path:
timestamp = time.strftime('%Y%m%d%H%M%S', time.localtime())
file_name = f'{hostname}-config-backup-{timestamp}.txt'
with open(f'{local_path}/{file_name}', 'w') as f:
f.write(config.decode('utf-8'))
# 关闭连接
ssh.close()
return True
except Exception as e:
print(f'Backup failed: {e}')
return False
使用示例
请替换以下参数为实际的设备信息和本地路径
backup_config(‘192.168.1.1’, ‘admin’, ‘Admin@123’, local_path=‘/path/to/local/directory’)
这段代码使用了Paramiko库来远程管理华为设备,执行备份到本地文件。
如果没有提供本地路径,则仅备份设备配置但不保存到本地文件。
在备份过程中,使用时间戳来保证文件名的唯一性。