При использовании obj_parser в вызове cli не обрабатывается pattern_syntax_error
Вызываем в скрипте
self.cli(cmd, obj_parser=self.parse_ports, cmd_next="n", cmd_stop="q")
В core/script/cli/cli.py строка есть проверка self.profile.rx_pattern_syntax_error.search(self.buffer), но self.buffer всегда пуст.
Если заменить на buffer то обработка происходит, но появляется еще проблема при использовании конструкции вида
cmd = "show ddm ports status"
try:
ports = self.cli(cmd, obj_parser=self.parse_ports, cmd_next="n", cmd_stop="q")
except self.CLISyntaxError:
cmd = "show ddm ports all status"
try:
ports = self.cli(cmd, obj_parser=self.parse_ports, cmd_next="n", cmd_stop="q")
except self.CLISyntaxError:
raise self.NotSupportedError()
Происходит обработка pattern_syntax_error и выполняется попытка отправки следующеё команды, но свич еще не закончил отвечать на предыдущую и как результат и новая конмада не проходит.
2022-01-02 10:42:38,643 [asyncio] Using selector: EpollSelector
2022-01-02 10:42:38,644 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Send: b'show ddm ports status\n'
2022-01-02 10:42:38,644 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Parsing object stream
2022-01-02 10:42:38,755 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b's'
2022-01-02 10:42:38,757 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'h'
2022-01-02 10:42:38,760 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'o'
2022-01-02 10:42:38,762 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'w'
2022-01-02 10:42:38,764 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b' '
2022-01-02 10:42:38,767 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'd'
2022-01-02 10:42:38,769 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'd'
2022-01-02 10:42:38,772 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'm'
2022-01-02 10:42:38,774 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b' '
2022-01-02 10:42:38,776 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'p'
2022-01-02 10:42:38,779 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'o'
2022-01-02 10:42:38,781 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'r'
2022-01-02 10:42:38,783 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b't'
2022-01-02 10:42:38,785 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b's'
2022-01-02 10:42:38,788 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b' '
2022-01-02 10:42:38,790 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b's'
2022-01-02 10:42:38,793 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b't'
2022-01-02 10:42:38,795 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'a'
2022-01-02 10:42:38,797 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b't'
2022-01-02 10:42:38,799 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'u'
2022-01-02 10:42:38,802 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b's'
2022-01-02 10:42:38,804 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'\r'
2022-01-02 10:42:38,806 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'\n'
2022-01-02 10:42:38,859 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'Command: show ddm ports\r\n'
2022-01-02 10:42:38,861 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'\r\n'
2022-01-02 10:42:38,863 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'Next possible completions:\r\n'
2022-01-02 10:42:38,864 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Command: b'show ddm ports status'
2022-01-02 10:42:38,864 [asyncio] Using selector: EpollSelector
2022-01-02 10:42:38,864 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Send: b'show ddm ports all status\n'
2022-01-02 10:42:38,865 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Parsing object stream
2022-01-02 10:42:38,865 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'<portlist> all \r\n'
2022-01-02 10:42:38,868 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'\r\n'
2022-01-02 10:42:38,874 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Received: b'\rDGS-1210-12TS/ME:5# '
2022-01-02 10:42:38,874 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Match: b'DGS\\-1210\\-12TS/ME:5(?<!:(3|6))(?<!:operator)(?<!:user)#'
2022-01-02 10:42:38,874 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Changing state to <prompt>
2022-01-02 10:42:38,875 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Setting timeout: 3600s, error=CLIConnectionReset
2022-01-02 10:42:38,875 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Prompt matched
2022-01-02 10:42:38,875 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Command: b'show ddm ports all status'
2022-01-02 10:42:38,875 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Shutdown session
2022-01-02 10:42:38,875 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Closing stream
2022-01-02 10:42:38,876 [asyncio] Using selector: EpollSelector
2022-01-02 10:42:38,876 [script] [DLink.DxS.get_dom_status|192.168.0.14] [telnet] Send: b'logout'
2022-01-02 10:42:38,876 [script] [DLink.DxS.get_dom_status|192.168.0.14] Result: []
2022-01-02 10:42:38,877 [script] [DLink.DxS.get_dom_status|192.168.0.14] Complete (619.56ms)
NOC About
20.4+master.2223.f6d8cdb3