0

我正在尝试运行我的 python 代码,但第二个函数(见下文.. md5())不起作用!这是我需要解决的错误吗?

**连接到设备” 10.0.100.126 您要上传哪个图像?是的,您想为图像命名什么?测试按 Enter 继续目标文件名 [测试]?上传............ …………………………………………………………………………………………

from netmiko import ConnectHandler
from rashhad import yml
from keyboard import press
import time
from pynput.keyboard import Key, Controller

from test import image_name

with open('dev_devices.txt') as f:
    devices_list = f.read().splitlines()

for ip_address in devices_list:
    print('___________________________________________________________\n')
    print('Connecting to device" ' + ip_address)
    ios_device = {
        'device_type': 'cisco_ios',
        'ip': ip_address,
        'global_delay_factor': 4,
        "fast_cli": False,

    }

ios_device.update(yml('pass.yml', 'admin_a'))

cmd = "copy tftp://10.36.50.60/s2t54-ipservicesk9-mz.SPA.152-1.SY6.bin bootdisk:/"


def upload():
    net_connect = ConnectHandler(**ios_device)
    net_connect.enable()
    firmware = input("which image would you like to upload?")
    if firmware == "yes":
        name = input("what would you like to name the image?")
        output = net_connect.send_command(cmd + name, delay_factor=4, expect_string=r'Destination filename')
        input("press enter to continue")
        press('enter')
        print(output)
        print("UPLOADING.....................................")
        net_connect.send_command("wr")
        net_connect.disconnect()


upload()

time.sleep(20)


def md5(): # This function does not run for some reason, I have no idea
    net_connect = ConnectHandler(**ios_device)
    net_connect.enable()
    name = input("which image would you like to compare?")
    checksum = net_connect.send_command("verify /md5 bootdisk:" + name, delay_factor=4)
    print(checksum[-31:])
    net_connect.disconnect()



md5()

错误如下

Destination filename [testing]? 
UPLOADING.....................................
Traceback (most recent call last):
  File "C:\Users\rashhad.miah\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\paramiko\channel.py", line 699, in recv
    out = self.in_buffer.read(nbytes, self.timeout)
  File "C:\Users\rashhad.miah\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\paramiko\buffered_pipe.py", line 164, in read
    raise PipeTimeout()
paramiko.buffered_pipe.PipeTimeout

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\rashhad.miah\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\netmiko\base_connection.py", line 569, in _read_channel_expect
    new_data = self.remote_conn.recv(MAX_BUFFER)
  File "C:\Users\rashhad.miah\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\paramiko\channel.py", line 701, in recv
    raise socket.timeout()
socket.timeout

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\rashhad.miah\Desktop\netauto\test.py", line 41, in <module>
    upload()
  File "C:\Users\rashhad.miah\Desktop\netauto\test.py", line 37, in upload
    net_connect.send_command("wr")
  File "C:\Users\rashhad.miah\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\netmiko\utilities.py", line 430, in wrapper_decorator
    return func(self, *args, **kwargs)
  File "C:\Users\rashhad.miah\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\netmiko\base_connection.py", line 1490, in send_command
    new_data = self.read_until_pattern(pattern=re.escape(cmd))
  File "C:\Users\rashhad.miah\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\netmiko\base_connection.py", line 651, in read_until_pattern
    return self._read_channel_expect(*args, **kwargs)
  File "C:\Users\rashhad.miah\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\netmiko\base_connection.py", line 579, in _read_channel_expect
    raise NetmikoTimeoutException(
netmiko.ssh_exception.NetmikoTimeoutException: Timed-out reading channel, data not available.

Process finished with exit code 1
4

1 回答 1

0

您的异常堆栈跟踪表明您wr在上传功能中执行失败。

  File "C:\Users\rashhad.miah\Desktop\netauto\test.py", line 37, in upload
    net_connect.send_command("wr")

你还需要那个吗?

特别是它在该wr命令的回显上失败了,即 Netmiko 期望wr得到回显,但它从未见过它:

packages\netmiko\base_connection.py", line 1490, in send_command
    new_data = self.read_until_pattern(pattern=re.escape(cmd))

您可能想查看 Netmiko session_log 或 Netmiko 的调试日志

于 2021-06-11T17:11:00.187 回答