The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Net::CLI::Interact::Manual::Phrasebook - List of Supported CLIs

INTRODUCTION

The bundled phrasebook includes support for a variety of network device CLIs. Many were contributed by users of the module. If you set up a new CLI dictionary, please consider contributing it back! The phrasebook specification is given in Net::CLI::Interact::Phrasebook.

For each supported CLI, there is a name which must be passed in the personality option to Net::CLI::Interact's new() method. After that, you can call the included Macros, and the module will use the included Prompt to match the current state of the CLI. More information is available in the Tutorial and Cookbook.

Below is a list of all current bundled CLI dictionaries. Each lists its name, the available Prompts, Macros and Continuations, and from which other CLI dictionaries it inherits.

 IOS       # Cisco IOS
 CatOS     # for older, pre-IOS Cisco devices
 
 PIXOS     # for PIX OS-based devices
 PIXOS7    # Slightly different commands from other PIXOS versions
 FWSM      # currently the same as 'PIXOS'
 FWSM3     # for FWSM Release 3.x devices (slightly different to FWSM 2.x)
 
 JunOS     # Juniper JUNOS support
 HP        # HP support
 Nortel    # Nortel support
 ExtremeOS # Extreme Networks support
 Foundry   # Foundry/Brocade device support
 
 Bash      # GNU Bourne-Again SHell (i.e. most linux systems)

PERSONALITIES

Bash

This personality goes by the name of bash.

Prompts are prompt, privileged, user and pass. The pass prompt works either for an initial SSH connection, or a sudo request.

Macros are begin_privileged, end_privileged, and disconnect. The begin_privileged macro issues a sudo request to become the root user.

Cisco

This personality goes by the name of cisco and provides a basis for many other CLI dictionaries.

Prompts are basic, privileged, configure, user, and pass.

Macros are begin_privileged, end_privileged, begin_configure, end_configure, and disconnect.

CatOS

This personality goes by the name of catos and inherits from the cisco dictionary.

Additionally it provides the privileged Prompt.

Additionally it also provides the paging Macro to set the terminal page size.

ExtremeOS

This personality goes by the name of extremeos and inherits from the cisco dictionary.

Additional Prompts are basic, privileged, configure, user, and pass.

Additional Macros are begin_privileged, end_privileged, and disconnect.

Foundry / Brocade

This personality goes by the name of foundry and inherits from the cisco dictionary. Before connecting to the device you probably want to set the output separator to be:

 $nci->transport->ors("\r\n");

For users of Net::Appliance::Session this should be:

 $session_obj->nci->transport->ors("\r\n");

IOS

This personality goes by the name of ios and inherits from the cisco dictionary.

Additionally it provides the paging Macro to set the terminal page size.

HP

This personality goes by the name of hp and inherits from the cisco dictionary.

Additionally it provides the basic and user Prompts.

Additionally it provides enable_paging and disable_paging Macros.

JunOS

This personality goes by the name of junos and inherits from the cisco dictionary.

Additionally it provides the privileged, configure, and user Prompts.

Additionally it also provides the begin_configure and paging Macros.

Nortel

This personality goes by the name of nortel and inherits from the cisco dictionary.

Additionally it provides the user Prompt.

PIXOS

This personality goes by the name of pixos and inherits from the cisco dictionary.

Additionally it provides the paging Macro to set the terminal page size.

It can be used in its own right for Cisco PIX firewalls, but is also used as a base for other dictionaries.

PIXOS 7

This personality goes by the name of pixos7 and inherits from the pixos dictionary.

Additionally it provides the paging Macro to set the terminal page size.

FWSM

This personality goes by the name of fwsm and inherits from the pixos dictionary.

It provides no further functionality, as Cisco FWSM software version 1 and 2 was the same as the PIX OS.

FWSM 3

This personality goes by the name of fwsm3 and inherits from the pixos dictionary.

Additionally it provides the paging Macro to set the terminal page size.

SUPPORTING A NEW DEVICE

In order to support a new device, particularly for the Net::Appliance::Session module, there is a basic set of prompts and macros you must create.

Required Prompts

With SSH, no user prompt is required, but for other transports you should include a prompt named user which matches the "Username:" prompt presented by the device.

 # example only!
 prompt user
     match /[Uu]sername/

With all transports you must provide a pass prompt which matches the "password:" prompt presented by the device.

 # example only!
 prompt pass
     match /[Pp]assword: ?$/

The last essential prompt is of course a simple command line prompt match, and this should be named generic.

 # example only!
 prompt generic
     match /> ?$/

Desirable Prompt and Macros

To cleanly disconnect from your device session, you might want to include a macro named disconnect with the relevant command. Note there is no need for a match statement in this macro, as the device should have detached!

 # example only!
 macro disconnect
     send exit

For paging support, include either only a prompt macro, or two macros named enable_paging and disable_paging, depending on what the device requires. In all cases, there must be one substitution ("%s") which is where the number of page lines will be inserted into the command.

 # example only!
 macro paging
     send terminal length %s

For privileged mode (super-user) support, include a prompt named privileged first, and then include macros named begin_privileged and end_privileged to enter and leave the mode, respectively. Note that both macros will require explicit match statements, because the prompt encountered after issuing the command will be different to that encountered before.

 # example only!
 prompt privileged
     match /# ?$/
 
 macro begin_privileged
     send enable
     match user or pass or privileged
 
 macro end_privileged
     send disable
     match generic

Similarly for configure mode, include a prompt named configure first, and then include macros named begin_configure and end_configure to enter and leave the mode, respectively. Note that both macros will require explicit match statements, because the prompt encountered after issuing the command will be different to that encountered before.

 # example only!
 prompt configure
     match /\(config[^)]*\)# ?$/
 
 macro begin_configure
     send configure terminal
     match configure
 
 macro end_configure
     send exit
     match privileged