Netmiko - 进入配置终端模式

Netmiko - Enter configuration terminal mode

我正在尝试使用 Netmiko 并在 'configuration terminal' 模式下工作。 为什么只有'enable'模式功能而没有'configuration terminal'模式?(即:net_connect.enable())

我的程序应该执行这些步骤:

  1. 登录
  2. 更改为启用模式
  3. 更改以配置终端
  4. 插入受限许可证(在配置终端模式下)
  5. 运行 '_shell' 从 CLI 更改为常规 Linux bash.

正在编辑 我尝试了以下命令输入 config_mode 并得到了 'ValueError'.

net_connect.find_prompt()
net_connect.enable()
net_connect.find_prompt()
net_connect.config_mode()
net_connect.find_prompt()

日志:

>>> from netmiko import ConnectHandler
>>> net_connect = ConnectHandler(device_type='cisco_ios', host='r-hpc-sw19', username='admin', password='admin') 
>>> net_connect.find_prompt()                                                                                    
'r-hpc-sw19 [standalone: master] >'                                                                              
>>> net_connect.enable()                                                                                         
'enable\r\r\n\rr-hpc-sw19 [standalone: master] # '                                                               
>>> net_connect.find_prompt()                                                                                    
'r-hpc-sw19 [standalone: master] #'                                                                              
>>> net_connect.config_mode()                                                                                    
Traceback (most recent call last):                                                                               
  File "<stdin>", line 1, in <module>                                                                            
  File "/labhome/arielwe/.local/lib/python3.9/site-packages/netmiko/cisco_base_connection.py", line 48, in config_mode
    return super().config_mode(                                                                                       
  File "/labhome/arielwe/.local/lib/python3.9/site-packages/netmiko/base_connection.py", line 1766, in config_mode    
    raise ValueError("Failed to enter configuration mode.")                                                           
ValueError: Failed to enter configuration mode. 

第二次尝试:

from netmiko import ConnectHandler
net_connect = ConnectHandler(device_type='cisco_ios', host='r-hpc-sw19', username='admin', password='admin')
net_connect.find_prompt()
net_connect.enable()
net_connect.find_prompt()
cfg = net_connect.send_config_set(["show version | json-print"])
net_connect.find_prompt()

>>> from netmiko import ConnectHandler
>>> net_connect = ConnectHandler(device_type='cisco_ios', host='r-hpc-sw19', username='admin', password='admin')
>>> net_connect.find_prompt()
'r-hpc-sw19 [standalone: master] >'
>>> net_connect.enable()
'enable\r\r\n\rr-hpc-sw19 [standalone: master] # '
>>> net_connect.find_prompt()
'r-hpc-sw19 [standalone: master] #'
>>> cfg = net_connect.send_config_set(["show version | json-print"])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/labhome/arielwe/.local/lib/python3.9/site-packages/netmiko/base_connection.py", line 1876, in send_config_set
    output += self.config_mode(*cfg_mode_args)
  File "/labhome/arielwe/.local/lib/python3.9/site-packages/netmiko/cisco_base_connection.py", line 48, in config_mode
    return super().config_mode(
  File "/labhome/arielwe/.local/lib/python3.9/site-packages/netmiko/base_connection.py", line 1766, in config_mode
    raise ValueError("Failed to enter configuration mode.")
ValueError: Failed to enter configuration mode.
>>> net_connect.find_prompt()


谢谢, 爱丽儿.

Why there only 'enable' mode function and not 'configuration terminal' mode.?

netmiko中有一个configure terminal模式,使用conn.config_mode() 发送configure terminal到远程设备。

但是,您可以使用send_config_set(),它默认进入配置模式并在最后一个命令发送后退出。使用 send_config_set()

的示例
from netmiko import ConnectHandler

device = {
    "device_type": "cisco_ios",
    "ip": "192.168.1.1",
    "username": "cisco",
    "password": "cisco",
    "secret": "cisco",
    "fast_cli": False,
}

with ConnectHandler(**device) as conn:
    if not conn.check_enable_mode():
        conn.enable()
    cfg = conn.send_config_set(["interface Loopback 212", "shutdown"])

print(cfg)
RTR1(config)#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
RTR1(config)#interface Loopback 212
RTR1(config-if)#shutdown
RTR1(config-if)#end
RTR1#

编辑

由于send_config_set()config_mode()都不行,你可以使用send_command_timing()并自己编写命令,而不是使用netmiko中的方法。

send_command_timing() 基于延迟的 而不是像 send_command() 那样的 基于模式的 。计时方法等待一段时间并在之后发送命令,它不搜索任何模式。您还可以阅读本 documentation link 的第一部分以了解更多有关 send_command_timing()

的信息
net_conn.send_command_timing("enable")
net_conn.send_command_timing("configure terminal")

您必须确定用户的权限级别或使用秘密密码从 ssh 进入配置模式。

没有那个,

Conn.enable() & conn.send_config_set() 

不会工作