使用napalm的commit:_config的问题,未找到配置文件

问题描述 投票:0回答:1

[我正在尝试测试napalm的提交,但是无法找到cfg文件,我也尝试将其更改为“ txt”,但是存在相同的错误。这是我的代码:

import napalm
import json


driver = napalm.get_network_driver("ios")


device = driver(
    hostname="10.0.0.254",
    username="cisco",
    password="cisco",
    optional_args={"secret" : "cisco"}

)

device.open()

device.load_merge_candidate(filename="config.cfg")
device.commit_config()
device.close() 

这是错误,两个文件都在同一文件夹中:

user @ user-pc:〜/ Documents / python_files $ / usr / bin / python3 /home/user/Documents/python_files/network/config_compare.py追溯 (最近通话最近):文件 “ /home/user/Documents/python_files/network/config_compare.py”,行 18,在 device.load_merge_candidate(filename =“ config.cfg”)文件“ /home/user/.local/lib/python3.8/site-packages/napalm/ios/ios.py”, 315行,在load_merge_candidate中 return_status,msg = self._load_candidate_wrapper(文件“ /home/user/.local/lib/python3.8/site-packages/napalm/ios/ios.py”, _load_candidate_wrapper中的第282行 (return_status,msg)= self._scp_file(文件“ /home/user/.local/lib/python3.8/site-packages/napalm/ios/ios.py”, _scp_file中的第620行 返回self._xfer_file(文件“ /home/user/.local/lib/python3.8/site-packages/napalm/ios/ios.py”, _xfer_file中的第670行 使用TransferClass(** kwargs)作为传输:文件“ /home/user/.local/lib/python3.8/site-packages/netmiko/ssh_dispatcher.py”, FileTransfer中的第278行 返回FileTransferClass(* args,** kwargs)文件“ /home/user/.local/lib/python3.8/site-packages/netmiko/scp_handler.py”, 第80行,在[[init中 self.source_md5 = self.file_md5(source_file)文件“ /home/user/.local/lib/python3.8/site-packages/netmiko/scp_handler.py”, 第257行,在file_md5中 使用open(file_name,“ rb”)作为f:FileNotFoundError:[Errno 2]没有这样的文件或目录:'config.c

感谢您的帮助。
ios python-3.x cisco cisco-ios napalm
1个回答
0
投票
似乎文件路径有问题,您确定'config.cfg'与您的代码位于同一目录中吗?

尝试以下操作,查看是否可以访问文件(如果不能,则需要修改文件路径):

import napalm driver = napalm.get_network_driver("ios") device = driver( hostname="10.0.0.254", username="cisco", password="cisco", optional_args={"secret" : "cisco"} ) device.open() print('This is a config to be added:\n') with open('config.cfg','r') as f: output = f.read() device.load_merge_candidate(filename="config.cfg") # I would add this to see what's you are merging: print(device.compare_config()) confirm_config= input('Do you want to deploy the above config? Press Y to deploy \n') if confirm_config == 'Y': device.commit_config() device.close() else: device.close()

© www.soinside.com 2019 - 2024. All rights reserved.