@@ -15,14 +15,33 @@ class CienaSaosBase(NoEnable, NoConfig, BaseConnection):
15
15
Implements methods for interacting Ciena Saos devices.
16
16
"""
17
17
18
+ prompt_pattern = r"[>#$]"
19
+
20
+ def set_base_prompt (
21
+ self ,
22
+ pri_prompt_terminator : str = "" ,
23
+ alt_prompt_terminator : str = "" ,
24
+ delay_factor : float = 1.0 ,
25
+ pattern : Optional [str ] = None ,
26
+ ) -> str :
27
+ """Ciena can use '>', '$', '#' for prompt terminator depending on the device."""
28
+ prompt = self .find_prompt (delay_factor = delay_factor )
29
+
30
+ pattern = rf"^.+{ self .prompt_pattern } $"
31
+ if re .search (pattern , prompt ):
32
+ raise ValueError (f"Router prompt not found: { repr (prompt )} " )
33
+ # Strip off trailing terminator
34
+ self .base_prompt = prompt [:- 1 ]
35
+ return self .base_prompt
36
+
18
37
def session_preparation (self ) -> None :
19
- self ._test_channel_read (pattern = r"[>#]" )
38
+ self ._test_channel_read (pattern = self . prompt_pattern )
20
39
self .set_base_prompt ()
21
40
self .disable_paging (command = "system shell session set more off" )
22
41
23
42
def _enter_shell (self ) -> str :
24
43
"""Enter the Bourne Shell."""
25
- output = self ._send_command_str ("diag shell" , expect_string = r"[$#>]" )
44
+ output = self ._send_command_str ("diag shell" , expect_string = self . prompt_pattern )
26
45
if "SHELL PARSER FAILURE" in output :
27
46
msg = "SCP support on Ciena SAOS requires 'diag shell' permissions"
28
47
raise ValueError (msg )
0 commit comments