簡體   English   中英

使用 python 的 Netmiko FileTransfer

[英]Netmiko FileTransfer with python

我正在編寫一個腳本,使用 netmiko FileTransfer 將一些文件傳輸到 Cisco IOS 設備。 下面是我找到的用於完成此操作的代碼。 但是我似乎無法找到 source_file 應該在哪里或如何指定文件所在主機上的位置。 如何指定從何處復制該文件?

dest_file_system = 'disk0:/'
source_file = 'test1.txt' # where should this file be live?
dest_file = 'test1.txt'

with FileTransfer(ssh_conn, source_file=source_file, dest_file=dest_file,
file_system=dest_file_system) as scp_transfer:

if not scp_transfer.check_file_exists():
   if not scp_transfer.verify_space_available():
      raise ValueError("Insufficient space available on remote device")

        print("\nTransferring file\n")
        scp_transfer.transfer_file()

從腳本角度來看,如果您只是想按名稱調用源文件,則該源文件應與腳本本身位於同一目錄中。 如果要將文件移動到新目錄,則腳本中的搜索路徑相對於腳本運行的目錄。 示例1-file_name.txt與腳本位於同一目錄中在腳本中,只需調用文件source =“ file_name.txt”。 示例2在保存腳本的當前目錄中創建test_folder並將其命名為test_folder將file_name.txt移到test_folder中。 在腳本中,您的源變量不需要看起來像此源=“ test_folder / file_name.txt”

希望到目前為止您已經找到了解決方案。 如果沒有,那么您也可以嘗試使用 netmiko 文件傳輸功能。 這將是一種更安全、更有效的方法。

嘗試下面的示例腳本。

from getpass import getpass
from netmiko import ConnectHandler, file_transfer

password = getpass()

cisco = {
    "device_type": "cisco_ios",
    "host": "cisco1.twb-tech.com",
    "username": "pyclass",
    "password": password,
}

source_file = "test1.txt"
dest_file = "test1.txt"
direction = "put"
file_system = "flash:"

ssh_conn = ConnectHandler(**cisco)
transfer_dict = file_transfer(
    ssh_conn,
    source_file=source_file,
    dest_file=dest_file,
    file_system=file_system,
    direction=direction,
    overwrite_file=True,
)

print(transfer_dict)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM