2

我正在尝试使用 netmiko 以及cli_commandAnsible 的模块来工作。cli_command允许将任意字符串列表发送到设备(fe configure, sh te 1/0/1,exit在单个多行字符串中)并且它可以正常工作。

如果“配置”作为命令发送,Netmiko 需要一个单独的send_config和导致连接挂起。send_command

有什么方法可以强制 netmiko 在配置模式下接受修改后的提示,就像它是一个普通命令一样?

基本上,我希望这个工作:

connection.send_command('''
  configure
  shutdown te 1/0/1
  end
  show interface te 1/0/1
''')
4

2 回答 2

0

send_command通过检测设备提示(基于模式)来工作,然后它知道在检测到提示时命令已完成。当您使用发送命令时,每个命令都会发生这种情况send_command

相反,使用send_command_timing它是另一个版本send_command但基于延迟并且不寻找设备提示。

from netmiko.ssh_dispatcher import ConnectHandler

device = {
    "device_type": "cisco_ios",
    "ip": "",
    "username": "",
    "password": "",
    "session_log": "log.log",
}

with ConnectHandler(**device) as ssh_conn:
    output = ssh_conn.send_command_timing(  # Notice the send_command_timing()
        command_string="""
    configure terminal
    interface loopback 925
    shutdown
    end
    show interface loopback 925
    """
    )
print(output)

还可以查看这篇关于 Python for Network Engineers 的博客文章,我想你会发现它非常有用。

于 2021-08-02T18:47:02.317 回答
0

我在发送命令中遇到了类似的错误:

“netmiko.exceptions.ReadTimeout:未检测到模式:'{设备主机名}\#'在输出中。”

我可以确认@Tes3away 提出的解决方案为我解决了这个问题。

于 2021-11-30T20:47:33.540 回答