nornir-automation / nornir

Pluggable multi-threaded framework with inventory management to help operate collections of devices
https://nornir.readthedocs.io/
Apache License 2.0
1.38k stars 234 forks source link

ValueError: Router prompt not found #705

Closed ladvocat closed 3 years ago

ladvocat commented 3 years ago

Hello,

I am having problems to run the netmiko_send_command with a Mikrotik device. I am getting the error "ValueError: Router prompt not found: '[xxx@MikroTik] > \x1b[r'"

I already tried to use the option strip_ansi_escape_codes = True, but it doesn't work.

result_show_sys = mikrotik_devices.run(netmiko_send_command, command_string="system resource print", strip_ansi_escape_codes = True, use_timing=True)

print_result(result_show_sys)

vvvv netmiko_send_command ** changed : False vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv ERROR

Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/nornir/core/task.py", line 99, in start r = self.task(self, self.params) File "/usr/local/lib/python3.9/site-packages/nornir_netmiko/tasks/netmiko_send_command.py", line 26, in netmiko_send_command net_connect = task.host.get_connection(CONNECTION_NAME, task.nornir.config) File "/usr/local/lib/python3.9/site-packages/nornir/core/inventory.py", line 494, in get_connection self.open_connection( File "/usr/local/lib/python3.9/site-packages/nornir/core/inventory.py", line 546, in open_connection conn_obj.open( File "/usr/local/lib/python3.9/site-packages/nornir_netmiko/connections/netmiko.py", line 59, in open connection = ConnectHandler(parameters) File "/usr/local/lib/python3.9/site-packages/netmiko/ssh_dispatcher.py", line 326, in ConnectHandler return ConnectionClass(args, kwargs) File "/usr/local/lib/python3.9/site-packages/netmiko/mikrotik/mikrotik_ssh.py", line 13, in init return super().init(kwargs) File "/usr/local/lib/python3.9/site-packages/netmiko/base_connection.py", line 350, in init self._open() File "/usr/local/lib/python3.9/site-packages/netmiko/base_connection.py", line 356, in _open self._try_session_preparation() File "/usr/local/lib/python3.9/site-packages/netmiko/base_connection.py", line 792, in _try_session_preparation self.session_preparation() File "/usr/local/lib/python3.9/site-packages/netmiko/mikrotik/mikrotik_ssh.py", line 20, in session_preparation self.set_base_prompt() File "/usr/local/lib/python3.9/site-packages/tenacity/init.py", line 339, in wrapped_f return self(f, args, *kw) File "/usr/local/lib/python3.9/site-packages/tenacity/init.py", line 430, in call do = self.iter(retry_state=retry_state) File "/usr/local/lib/python3.9/site-packages/tenacity/init.py", line 378, in iter raise retry_exc.reraise() File "/usr/local/lib/python3.9/site-packages/tenacity/init.py", line 206, in reraise raise self.last_attempt.result() File "/usr/local/lib/python3.9/concurrent/futures/_base.py", line 438, in result return self.get_result() File "/usr/local/lib/python3.9/concurrent/futures/_base.py", line 390, in get_result raise self._exception File "/usr/local/lib/python3.9/site-packages/tenacity/init.py", line 433, in call result = fn(args, **kwargs) File "/usr/local/lib/python3.9/site-packages/netmiko/base_connection.py", line 1166, in set_base_prompt raise ValueError(f"Router prompt not found: {repr(prompt)}") ValueError: Router prompt not found: '[xxx@MikroTik] > \x1b[r' `

ktbyers commented 3 years ago

With MikroTik you will probably need to use the Netmiko develop branch to get them to work.

Note, the Netmiko develop branch is Netmiko4 code so you might have to patch the Nornir pyproject.toml file and you will definitely want to do a bunch of testing (as I haven't tested Netmiko4 code on Nornir yet).

Alternatively, you could look up in the Netmiko GitHub issues history and see if you can reverse engineer the fix into the Netmiko 3.x code.

Regards, Kirk