SikCommander: CLI commander

sikcommander.py implements SikCommander: a CLI commander for high-level management of CLI session with a Siklu radio. It provides the following functionality:

  1. Manage a CLI session with a radio (a wrapper for SikCli)

  2. Run ‘show’ CLI commands and parse the output

  3. Perform actions, such as:

    • setting the time of day

    • executing a script (list of commands)

SikCommander makes use of auxiliary modules to parse the output of ‘show’ CLI commands:

It also makes use of Credential as a container for radio’s IP address, username, and password.

Usage Examples:

MH-TG Radio
>>> from batchscanner.credentials import Credential
>>> credential = Credential('192.168.0.1', 'admin', 'admin')
>>> from batchscanner.sikcommander import SikCommander
>>> commander = SikCommander(credential, include_tg_remote_cns=True)
>>> commander.show_tg()
>>> print(commander)
SikCommander:
   credential: Credential(192.168.0.1, admin, admin)
   include_tg_remote_cns: True
   connected: True
   errors: []
   model: MH-N366
   name: dn1
   radio_type: TG
   sw:
   sn:
   tg_remote_cns: ['cn1', 'cn2', 'cn3']
   commands_sent: [SikCommand(command=show radio-common, target_id=192.168.0.1: dn1, success=True, response='radio-bridge-tg-radio-common:radio-common...),
                   SikCommand(command=show radio-dn, target_id=192.168.0.1: dn1, success=True, response='radio-bridge-tg-radio-dn:radio-dn {\r\nnode-c...),
                   SikCommand(command=show, target_id=192.168.0.1: dn1, success=True, response='ietf-netconf-acm:nacm {\r\n   enable-nacm true;\r\n  '...),
                   SikCommand(command=show, target_id=192.168.0.1: dn1 -> cn1, success=True, response='ietf-netconf-acm:nacm {\r\n   enable-nacm true;...),
                   SikCommand(command=show, target_id=192.168.0.1: dn1 -> cn2, success=True, response='ietf-netconf-acm:nacm {\r\n   enable-nacm true;...),
                   SikCommand(command=show, target_id=192.168.0.1: dn1 -> cn3, success=True, response='ietf-netconf-acm:nacm {\r\n   enable-nacm true;...)
                  ]
   output: [SikShowTg: parsed show output for '192.168.0.1: dn1',
            SikShowTg: parsed show output for '192.168.0.1: dn1 -> cn1',
            SikShowTg: parsed show output for '192.168.0.1: dn1 -> cn2',
            SikShowTg: parsed show output for '192.168.0.1: dn1 -> cn3'
           ]
EH / (classic) MH
>>> from batchscanner.credentials import Credential
>>> credential = Credential('192.168.0.1', 'admin', 'admin')
>>> from batchscanner.sikcommander import SikCommander
>>> commander = SikCommander(credential)
>>> commander.set_tod()
>>> _ = commander.send_cmds(['set system location London','set system contact Daniel'])
>>> print(commander)
SikCommander:
     credential: Credential(192.168.0.1, admin, admin)
     include_tg_remote_cns: False
     connected: True
     errors: []
     model: EH-710TX
     name: EH-710TX
     radio_type: EH
     sw: 7.7.10-13186-d2f25a6
     sn: T.BJF94A0015
     tg_remote_cns: []
     commands_sent: [SikCommand(command=set system time 07:15:52, target_id=192.168.180.23: EH-710TX, success=True, response='Set done: system '),
                     SikCommand(command=set system date 2023.08.16, target_id=192.168.180.23: EH-710TX, success=True, response='Set done: system '),
                     SikCommand(command=set system location London, target_id=192.168.180.23: EH-710TX, success=True, response='Set done: system '),
                     SikCommand(command=set system contact Daniel, target_id=192.168.180.23: EH-710TX, success=True, response='Set done: system ')
                    ]
     output: []

Class Information: