diff options
-rw-r--r-- | drivers/CiscoCatalyst.py | 30 | ||||
-rw-r--r-- | drivers/CiscoSX300.py | 38 |
2 files changed, 21 insertions, 47 deletions
diff --git a/drivers/CiscoCatalyst.py b/drivers/CiscoCatalyst.py index 8eb01e6..a9294b0 100644 --- a/drivers/CiscoCatalyst.py +++ b/drivers/CiscoCatalyst.py @@ -177,7 +177,7 @@ class CiscoCatalyst(SwitchDriver): regex = re.compile('^ *(\d+).*(active)') self._cli("show vlan brief") - for line in self._read_paged_output(): + for line in self._read_long_output(): match = regex.match(line) if match: vlans.append(int(match.group(1))) @@ -189,7 +189,7 @@ class CiscoCatalyst(SwitchDriver): name = None regex = re.compile('^ *\d+\s+(\S+).*(active)') self._cli("show vlan id %d" % tag) - for line in self._read_paged_output(): + for line in self._read_long_output(): match = regex.match(line) if match: name = match.group(1) @@ -230,7 +230,7 @@ class CiscoCatalyst(SwitchDriver): raise IndexError("Port name %s not recognised" % port) regex = re.compile('Administrative Mode: (.*)') self._cli("show interfaces %s switchport" % port) - for line in self._read_paged_output(): + for line in self._read_long_output(): match = regex.match(line) if match: mode = match.group(1) @@ -307,7 +307,7 @@ class CiscoCatalyst(SwitchDriver): raise IndexError("Port %s not in access mode" % port) regex = re.compile('Access Mode VLAN: (\d+)') self._cli("show interfaces %s switchport" % port) - for line in self._read_paged_output(): + for line in self._read_long_output(): match = regex.match(line) if match: vlan = match.group(1) @@ -329,7 +329,7 @@ class CiscoCatalyst(SwitchDriver): in_match = False vlan_text = '' - for line in self._read_paged_output(): + for line in self._read_long_output(): if in_match: match = regex_continue.match(line) if match: @@ -392,24 +392,10 @@ class CiscoCatalyst(SwitchDriver): def _end_configure(self): self._cli("end") - def _read_paged_output(self): - buf = [] + def _read_long_output(self): prompt = self._prompt_name + '#' - while True: - index = self.connection.expect([' -*More-*', prompt]) - if index == 0: # More: <space> - for line in self.connection.before.split('\r\n'): - line1 = re.sub('(\x08|\x0D)*', '', line.strip()) - buf.append(line1) - self._cli(' ', False) - elif index == 1: # Back to a prompt, says output is finished - break - - for line in self.connection.before.split('\r\n'): - line1 = re.sub('(\x08|\x0D)*', '', line.strip()) - buf.append(line1) - - return buf + self.connection.expect(prompt) + return self.connection.before.split('\r\n') def _get_port_names(self): logging.debug("Grabbing list of ports") diff --git a/drivers/CiscoSX300.py b/drivers/CiscoSX300.py index 579c034..64998cd 100644 --- a/drivers/CiscoSX300.py +++ b/drivers/CiscoSX300.py @@ -170,7 +170,7 @@ class CiscoSX300(SwitchDriver): regex = re.compile('^ *(\d+).*(D|S|G|R)') self._cli("show vlan") - for line in self._read_paged_output(): + for line in self._read_long_output(): match = regex.match(line) if match: vlans.append(int(match.group(1))) @@ -182,7 +182,7 @@ class CiscoSX300(SwitchDriver): name = None regex = re.compile('^ *\d+\s+(\S+).*(D|S|G|R)') self._cli("show vlan tag %d" % tag) - for line in self._read_paged_output(): + for line in self._read_long_output(): match = regex.match(line) if match: name = match.group(1) @@ -220,7 +220,7 @@ class CiscoSX300(SwitchDriver): raise IndexError("Port name %s not recognised" % port) regex = re.compile('Port Mode: (\S+)') self._cli("show interfaces switchport %s" % port) - for line in self._read_paged_output(): + for line in self._read_long_output(): match = regex.match(line) if match: mode = match.group(1) @@ -292,7 +292,7 @@ class CiscoSX300(SwitchDriver): raise IndexError("Port %s not in access mode" % port) regex = re.compile('(\d+)\s+\S+\s+Untagged\s+Static') self._cli("show interfaces switchport %s" % port) - for line in self._read_paged_output(): + for line in self._read_long_output(): match = regex.match(line) if match: vlan = match.group(1) @@ -308,7 +308,7 @@ class CiscoSX300(SwitchDriver): raise IndexError("Port %s not in trunk mode" % port) regex = re.compile('(\d+)\s+\S+\s+(Tagged|Untagged)\s+Static') self._cli("show interfaces switchport %s" % port) - for line in self._read_paged_output(): + for line in self._read_long_output(): match = regex.match(line) if match: vlans.append (int(match.group(1))) @@ -348,22 +348,10 @@ class CiscoSX300(SwitchDriver): def _end_configure(self): self._cli("end") - def _read_paged_output(self): - buf = [] + def _read_long_output(self): prompt = self._prompt_name + '#' - while True: - index = self.connection.expect(['More:.*<return>.*$', prompt]) - if index == 0: # More: <space> - for line in self.connection.before.split('\r\n'): - buf.append(line.strip()) - self._cli(' ', False) - elif index == 1: # Back to a prompt, says output is finished - break - - for line in self.connection.before.split('\r\n'): - buf.append(line.strip()) - - return buf + self.connection.expect(prompt) + return self.connection.before.split('\r\n') def _get_port_names(self): logging.debug("Grabbing list of ports") @@ -374,7 +362,7 @@ class CiscoSX300(SwitchDriver): regex = re.compile('^(\w+).*(Up|Down)') self._cli("show interfaces status detailed") - for line in self._read_paged_output(): + for line in self._read_long_output(): match = regex.match(line) if match: interfaces.append(match.group(1)) @@ -383,12 +371,12 @@ class CiscoSX300(SwitchDriver): def _show_config(self): logging.debug("Grabbing config") self._cli("show running-config") - return self._read_paged_output() + return self._read_long_output() def _show_clock(self): logging.debug("Grabbing time") self._cli("show clock") - return self._read_paged_output() + return self._read_long_output() def _get_systemdata(self): @@ -396,12 +384,12 @@ class CiscoSX300(SwitchDriver): logging.debug("Grabbing system data") self._cli("show system") - for line in self._read_paged_output(): + for line in self._read_long_output(): self._systemdata.append(line) logging.debug("Grabbing system sw and hw versions") self._cli("show version") - for line in self._read_paged_output(): + for line in self._read_long_output(): self._systemdata.append(line) ###################################### |