Skip to content

Commit 95b5d83

Browse files
authored
Merge branch 'develop' into aruba_os_file_transfer
2 parents 92c3360 + f9b000b commit 95b5d83

File tree

12 files changed

+88
-7
lines changed

12 files changed

+88
-7
lines changed

netmiko/adtran/adtran.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ def enable(
4646

4747
# Search for trailing prompt or password pattern
4848
output += self.read_until_prompt_or_pattern(
49-
pattern=pattern, re_flags=re_flags
49+
pattern=pattern, re_flags=re_flags, read_entire_line=True
5050
)
5151

5252
# Send the "secret" in response to password pattern
53-
if re.search(pattern, output):
53+
if re.search(pattern, output, flags=re_flags):
5454
self.write_channel(self.normalize_cmd(self.secret))
5555

5656
# Handle the fallback to local authentication case

netmiko/base_connection.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2051,11 +2051,11 @@ def enable(
20512051

20522052
# Search for trailing prompt or password pattern
20532053
output += self.read_until_prompt_or_pattern(
2054-
pattern=pattern, re_flags=re_flags
2054+
pattern=pattern, re_flags=re_flags, read_entire_line=True
20552055
)
20562056

20572057
# Send the "secret" in response to password pattern
2058-
if re.search(pattern, output):
2058+
if re.search(pattern, output, flags=re_flags):
20592059
self.write_channel(self.normalize_cmd(self.secret))
20602060
output += self.read_until_prompt()
20612061

netmiko/cisco/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from netmiko.cisco.cisco_ios import CiscoIosFileTransfer
88
from netmiko.cisco.cisco_ios import InLineTransfer
99
from netmiko.cisco.cisco_asa_ssh import CiscoAsaSSH, CiscoAsaFileTransfer
10+
from netmiko.cisco.cisco_ap_ssh import CiscoApSSH
1011
from netmiko.cisco.cisco_ftd_ssh import CiscoFtdSSH
1112
from netmiko.cisco.cisco_nxos import (
1213
CiscoNxosSSH,
@@ -27,6 +28,7 @@
2728
"CiscoIosSSH",
2829
"CiscoIosTelnet",
2930
"CiscoAsaSSH",
31+
"CiscoApSSH",
3032
"CiscoFtdSSH",
3133
"CiscoNxosSSH",
3234
"CiscoNxosTelnet",

netmiko/cisco/cisco_ap_ssh.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""Subclass specific to Cisco AP."""
2+
3+
from netmiko.no_config import NoConfig
4+
from netmiko.cisco_base_connection import CiscoBaseConnection
5+
6+
7+
class CiscoApSSH(NoConfig, CiscoBaseConnection):
8+
"""Subclass specific to Cisco AP."""
9+
10+
def session_preparation(self) -> None:
11+
"""Prepare the session after the connection has been established."""
12+
cmd = "terminal width 132"
13+
self.set_terminal_width(command=cmd, pattern=cmd)
14+
self.disable_paging()
15+
self.set_base_prompt()

netmiko/optilink/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
from netmiko.optilink.op_eolt9702 import OptilinkEOLT9702Telnet
22
from netmiko.optilink.op_eolt11444 import OptilinkEOLT11444Telnet
3+
from netmiko.optilink.op_golt924 import OptilinkGOLT924Telnet
34

45
__all__ = [
6+
"OptilinkGOLT924Telnet",
57
"OptilinkEOLT11444Telnet",
68
"OptilinkEOLT9702Telnet",
79
]

netmiko/optilink/op_golt924.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from netmiko.cisco_base_connection import CiscoBaseConnection
2+
3+
4+
class OptilinkGOLT924Base(CiscoBaseConnection):
5+
"""
6+
Optilink GOLT 92408A
7+
Optilink GOLT 92408A16A
8+
"""
9+
10+
def session_preparation(self) -> None:
11+
self._test_channel_read(pattern=r"[>#]")
12+
self.set_base_prompt()
13+
14+
def exit_enable_mode(self, exit_command: str = "exit") -> str:
15+
"""Exit from enable mode."""
16+
output = ""
17+
if self.check_enable_mode():
18+
self.write_channel(self.normalize_cmd(exit_command))
19+
self.read_until_pattern(pattern=exit_command)
20+
output += self.read_until_pattern(pattern=r"gpon>")
21+
if self.check_enable_mode():
22+
raise ValueError("Failed to exit enable mode.")
23+
return output
24+
25+
26+
class OptilinkGOLT924Telnet(OptilinkGOLT924Base):
27+
"""
28+
Optilink GOLT 92416A telnet driver
29+
Optilink GOLT 92408A telnet driver
30+
"""
31+
32+
pass

netmiko/ssh_autodetect.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@
101101
"priority": 99,
102102
"dispatch": "_autodetect_std",
103103
},
104+
"cisco_ap": {
105+
"cmd": "show version",
106+
"search_patterns": [r"Cisco AP Software"],
107+
"priority": 99,
108+
"dispatch": "_autodetect_std",
109+
},
104110
"cisco_asa": {
105111
"cmd": "show version",
106112
"search_patterns": [r"Cisco Adaptive Security Appliance", r"Cisco ASA"],

netmiko/ssh_dispatcher.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
CienaSaosFileTransfer,
4444
)
4545
from netmiko.cisco import CiscoAsaSSH, CiscoAsaFileTransfer
46-
from netmiko.cisco import CiscoApicSSH
46+
from netmiko.cisco import CiscoApicSSH, CiscoApSSH
4747
from netmiko.cisco import CiscoFtdSSH
4848
from netmiko.cisco import (
4949
CiscoIosSSH,
@@ -135,6 +135,7 @@
135135
from netmiko.oneaccess import OneaccessOneOSTelnet, OneaccessOneOSSSH
136136
from netmiko.optilink import OptilinkEOLT9702Telnet
137137
from netmiko.optilink import OptilinkEOLT11444Telnet
138+
from netmiko.optilink import OptilinkGOLT924Telnet
138139
from netmiko.ovs import OvsLinuxSSH
139140
from netmiko.paloalto import PaloAltoPanosSSH
140141
from netmiko.paloalto import PaloAltoPanosTelnet
@@ -216,8 +217,9 @@
216217
"ciena_saos": CienaSaosSSH,
217218
"ciena_saos10": CienaSaos10SSH,
218219
"ciena_waveserver": CienaWaveserverSSH,
219-
"cisco_asa": CiscoAsaSSH,
220+
"cisco_ap": CiscoApSSH,
220221
"cisco_apic": CiscoApicSSH,
222+
"cisco_asa": CiscoAsaSSH,
221223
"cisco_ftd": CiscoFtdSSH,
222224
"cisco_ios": CiscoIosSSH,
223225
"cisco_nxos": CiscoNxosSSH,
@@ -409,6 +411,7 @@
409411
CLASS_MAPPER["oneaccess_oneos_telnet"] = OneaccessOneOSTelnet
410412
CLASS_MAPPER["optilink_eolt9702_telnet"] = OptilinkEOLT9702Telnet
411413
CLASS_MAPPER["optilink_eolt11444_telnet"] = OptilinkEOLT11444Telnet
414+
CLASS_MAPPER["optilink_golt924_telnet"] = OptilinkGOLT924Telnet
412415
CLASS_MAPPER["paloalto_panos_telnet"] = PaloAltoPanosTelnet
413416
CLASS_MAPPER["rad_etx_telnet"] = RadETXTelnet
414417
CLASS_MAPPER["raisecom_telnet"] = RaisecomRoapTelnet

netmiko/tplink/tplink_jetstream.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def enable(
7474
pattern=pattern, re_flags=re_flags, read_entire_line=True
7575
)
7676
output += new_data
77-
if re.search(pattern, new_data):
77+
if re.search(pattern, new_data, flags=re_flags):
7878
self.write_channel(self.normalize_cmd(self.secret))
7979
output += self.read_until_prompt(read_entire_line=True)
8080
except ReadTimeout:

tests/etc/commands.yml.example

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ cisco_asa:
6767
config_verification: "show run | inc logging buffer"
6868
config_file: "cisco_asa_commands.txt"
6969

70+
cisco_ap:
71+
version: "show version"
72+
basic: "show ip interface brief"
73+
wide_command: "show configuration wlan myverybiglonglistthatdoesntexistandwherethisexceeds80characterssolinewrappingoccurs"
74+
extended_output: "show version" # requires paging to be disabled
75+
7076
arista_eos:
7177
version: "show version"
7278
basic: "show ip int brief"

0 commit comments

Comments
 (0)