04-14-2020 11:43 PM
I notice that my netmiko code can't run `sh run | i host` which is a legitimate Cisco command.
When I replace `sh run` with other command such as `sh clo`, or `show ip interface brief`, it works perfectly.
from netmiko import ConnectHandler R1 = { 'device_type': 'cisco_ios', 'ip': 'Router1', 'username': 'u', 'password': 'p' } R2 = { 'device_type': 'cisco_ios', 'ip': 'Router2', 'username': 'u', 'password': 'p' } all_devices = [R1, R2] for device in all_devices: connect = ConnectHandler(**device) output = connect.send_command('sh run | i host') print(output)
Output
user@linux:~$ python3 script.py ^ % Invalid input detected at '^' marker. ^ % Invalid input detected at '^' marker. user@linux:~$
Desired Output
hostname Router1 hostname Router2
Any idea why this code behave this way?
Solved! Go to Solution.
04-15-2020 12:31 AM - edited 04-15-2020 12:51 AM
hmm ok thanks for confirming ..
I am thinking it could be that .. sh clock and show int bri can be run without privilege mode. and for show runn you need to be in enable mode. does the user have priv 15? can you run any of the enable mode commands?
you can try - connect.enable()
r1 = { 'device_type': 'cisco_ios', 'host':'x.x.x.x', 'username':'xxx', 'password': 'xxx', 'secret': 'xxx'} ... connect.enable()
connect.send_command('sh run | i host')
04-14-2020 11:50 PM
the issue is not that netmiko can't execute .. netmiko can send the command and get output
try to run the command "sh run | i host" on the device first... do you get the desired output?
04-15-2020 12:14 AM
No issue with the Router, I already tested the command manually
04-15-2020 12:31 AM - edited 04-15-2020 12:51 AM
hmm ok thanks for confirming ..
I am thinking it could be that .. sh clock and show int bri can be run without privilege mode. and for show runn you need to be in enable mode. does the user have priv 15? can you run any of the enable mode commands?
you can try - connect.enable()
r1 = { 'device_type': 'cisco_ios', 'host':'x.x.x.x', 'username':'xxx', 'password': 'xxx', 'secret': 'xxx'} ... connect.enable()
connect.send_command('sh run | i host')
04-15-2020 12:38 AM
Hi,
Have you tried sending only "show hostname" command?
Regards,
Sergiu
04-15-2020 12:43 AM
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide