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)
OVMCLI # Oracle VM Manager CLI
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.
OVMCLI
This personality goes by the name of ovmcli
.
Prompts are prompt
and privileged
.
There is one macro named disconnect
.
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