02-09-2024 08:01 AM
Hello,
I need help to recover the cli prompt> after a Dialog conversation:
Since PyATS Junos does not have support for linux shell# access, I am using the Dialog conversation to accomplish sending commands in shell mode
1- From cli> enter shell with 'exit' , then the prompt becomes 'root@ga-u250-s2-137-jdm:~ # '
2- Execute the command 'vhclient cp file_A file_B'
3- Reenter CLI> and execute the command 'show virtual-network-functions'
from pyats.topology import loader
from unicon.eal.dialogs import Statement, Dialog
testbed = loader.load('/opt/labs-scripts/python/pytest/nfv/suites/cisco/sdwan/tests_common_testbed/testbed_vars/devices.yaml')
device = testbed.devices['ga-u250-s2-137-jdm']
config_dialog = Dialog([
Statement(pattern=r"root@ga-u250-s2-137-jdm:~ # ",
action=None,
loop_continue=False,
continue_timer=False)])
device.connect()
assert device.connected, 'Failed to reconnect to device'
print(f"Successfully connected to {device}\n")
device.execute('exit', reply=config_dialog)
device.execute('vhclient cp /var/public/c8000v-sdwan-img.17.12.01a.qcow2.org /var/public/c8000v-sdwan-img.17.12.01a.qcow2.org1', reply=config_dialog)
device.execute('show virtual-network-functions', timeout=60)
device.disconnect()
print('**********************')
This is the sequence I am trying to achieve:
root@ga-u250-s2-137-jdm>
root@ga-u250-s2-137-jdm> exit
root@ga-u250-s2-137-jdm:~ # vhclient cp /var/public/c8000v-sdwan-img.17.12.01a.qcow2.org /var/public/c8000v-sdwan-img.17.12.01a.qcow2.org1
root@ga-u250-s2-137-jdm:~ #
root@ga-u250-s2-137-jdm:~ # cli
root@ga-u250-s2-137-jdm> show virtual-network-functions
ID Name State Liveliness
--------------------------------------------------------------------------------
16 u250-s2-137-csdwan Running down
1 vjunos0 Running alive
6 u250-s2-137-aruba Running Not Available
root@ga-u250-s2-137-jdm>
The last command ('show virtual-network-functions') should be executed at the cli> prompt, but it tries to execute it at the shell# prompt, and I get a 'command not found' error
Output:
root@ga-u250-s2-137-jdm>
Successfully connected to Device ga-u250-s2-137-jdm, type router
2024-02-09 00:42:08,674: %UNICON-INFO: +++ ga-u250-s2-137-jdm with via 'cli': executing command 'exit' +++
exit
root@ga-u250-s2-137-jdm:~ #
2024-02-09 00:42:08,765: %UNICON-INFO: +++ ga-u250-s2-137-jdm with via 'cli': executing command 'vhclient cp /var/public/c8000v-sdwan-img.17.12.01a.qcow2.org /var/public/c8000v-sdwan-img.17.12.01a.qcow2.org1' +++
vhclient cp /var/public/c8000v-sdwan-img.17.12.01a.qcow2.org /var/public/c8000v-sdwan-img.17.12.01a.qcow2.org1
root@ga-u250-s2-137-jdm:~ #
2024-02-09 00:42:12,798: %UNICON-INFO: +++ ga-u250-s2-137-jdm with via 'cli': executing command 'show virtual-network-functions' +++
show virtual-network-functions
show: Command not found.
root@ga-u250-s2-137-jdm:~ #
**********************
(.venv) [an144a@DEVAUTOS02 suites]$
04-17-2024 07:49 AM
Hi,
maybe you have to use a different Dialog when prompt change?
from pyats.topology import loader
from unicon.eal.dialogs import Statement, Dialog
testbed = loader.load('/opt/labs-scripts/python/pytest/nfv/suites/cisco/sdwan/tests_common_testbed/testbed_vars/devices.yaml')
device = testbed.devices['ga-u250-s2-137-jdm']
config_dialog = Dialog([
Statement(pattern=r"root@ga-u250-s2-137-jdm:~ # ",
action=None,
loop_continue=False,
continue_timer=False)])
config_dialog_change_prompt = Dialog([
Statement(pattern=r"root@ga-u250-s2-137-jdm>",
action=None,
loop_continue=False,
continue_timer=False)])
device.connect()
assert device.connected, 'Failed to reconnect to device'
print(f"Successfully connected to {device}\n")
device.execute('exit', reply=config_dialog)
device.execute('vhclient cp /var/public/c8000v-sdwan-img.17.12.01a.qcow2.org /var/public/c8000v-sdwan-img.17.12.01a.qcow2.org1', reply=config_dialog)
device.execute('cli', reply=config_dialog_change_prompt)
device.execute('show virtual-network-functions', timeout=60, reply=config_dialog_change_prompt)
device.disconnect()
print('**********************')
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