What are variations?
There are a number of device specific script variables that CatTools uses during the execution of device scripts. If the characteristics of your device do not match these device specific variables then the script does not work correctly. The variations system provides a way to override these device specific variables on a device by device basis.
Which devices support variations?
Generic.Device script is a basic script designed to be a starting point for the use of variations. However, some of the other scripts also support the use of variations. In the device information panel a variations tab is available if the device supports variations. You can access the variations GUI via the Variations tab.
Overview of how to use variations
To use variations on a specific device a variations file for that device must be placed in the
\Program Files (x86)\CatTools3\Variations sub folder of the CatTools install directory. The variations file must be named the same as the
Device File Name in the CatTools Device Information > Device info pane. The file must have a .txt extension.
For example if your device was
Generic Device 1 with a File Name of
Generic_Device_1 your variations file would be called
Generic_Device_1.txt. You can manually create this file using notepad or you can use the variations GUI.
An individual variations file takes precedence over a group variations file.
Applying variations to a group of devices
It is possible to apply a single variations file to all devices of the same script type that belong to the same group. To do this, name the variations file the same as the device script type, for example,
Generic.Device.txt. Place the file in a folder with the same name as the group the devices belong to. This folder should be place in the
For example, to apply a variations file to all devices of the
Juniper.Router device type that belong to a group called
HeadOffice your directory structure would be:
You can manually create this file using notepad or you can use the variations GUI.
Variations File Contents
The variations file should include only the items you need to override. Outlined below are the items that can be overridden. The value within
" " is the value that you should change to your device specific value.
These are the prompts that the device displays when it asks for a user name or a password.
DEVICE_USERNAMEPROMPT = "Username:"
DEVICE_PASSWORDPROMPT = "Password:"
These are the characters which appear at the end of the hostname in the various modes the device has. So for example, if at your VTY prompt
Cisco2950> was displayed the prompt would be
DEVICE_STANDARDPROMPT = ">"
DEVICE_PRIVILEGEDPROMPT = "#"
DEVICE_CONFIGPROMPT = "("
Note that in this case, for the
config prompt only the first symbol that appears to the right of the hostname in config mode is selected. This would match the extended config modes. In this example, it would match
Cisco2950( appears in both of these prompts.
More Text (Paging prompts)
This is the text that is displayed at the end of a page when device paging is turned on.
You must include all of the
more paging prompt text. The
Device.Backup.Running Config activity strips the more text from the saved config. If you have not set the full
more paging prompt text, then the saved config may contain additional undesirable or invalid lines of config.
DEVICE_MORETEXT = "--More--"
Invalid / Incomplete command
These are the messages output by the device when an invalid / incomplete command is entered.
You do not have to include all of the
error text but enough so that it can be uniquely recognized and distinguished from other device output.
DEVICE_INVALIDCOMMAND = "% Invalid input detected at"
DEVICE_INCOMPLETECOMMAND = "% Incomplete command"
This is the text that appears when the device asks you a question which requires a yes or no answer, for example:
Reload Config (y/n). You should not include all of the text, but just enough of the text so that it can be uniquely recognized and distinguished from other device output.
DEVICE_YESNOTEXT = "(y/n)"
More Text Keystroke
This is the key that is pressed to continue from a paging prompt.
These are commands that are issued to the device during execution of certain parts of the script. The commands to enter the
leave enable / privileged exec (enable) mode.
COMMAND_ENTERENABLEMODE = "enable"
COMMAND_EXITENABLEMODE = "disable"
The commands to enter or leave config mode.
COMMAND_ENTERCONFIG = "configure terminal"
COMMAND_EXITCONFIG = "CTRL-Z"
The commands to disable / enable paging.
COMMAND_DISABLEPAGING = "terminal len 0"
COMMAND_ENABLEPAGING = "terminal len 24"
The commands to show the running config and the start up config.
Note: SolarWinds recommends avoiding the use of abbreviated commands such as
"sh run" as some of the scripts look for parts of the command, including
show, and use this to determine whether to increase the timeout for that command.
COMMAND_RUNNINGCONFIG = "show running-config"
COMMAND_STARTUPCONFIG = "show startup-config"
The commands to save changes, disconnect from the device and ping another device.
COMMAND_SAVENVRAM = "write mem"
COMMAND_DISCONNECT = "exit"
COMMAND_PING = "ping"
Backup Ignore Text
Device.Backup.Running Config activity defines certain items that are ignored as changes when the current and previous configs are compared. This variation allows you to add additional device specific items to the ignore text. Unlike the variations above you can have multiple
Backup Ignore Text items in your variations file. You cannot use
'|' to delimit multiple items in a single line. Each ignored item must be on a new line. See Ignore Text for more information.
BACKUP_IGNORETEXT = "^! Last configuration change at"
BACKUP_IGNORETEXT = "<Time"
Some devices require keystrokes to be sent prior to login to wake up the device. You can specify more than one
Pre Login Keystoke item so if there is a case in which you needed to press the space bar twice prior to logging in, you must include two
Pre login keystokes lines, each sending a single space.
PRE_LOGIN_KEYSTROKE = "CTRL-Y"
PRE_LOGIN_KEYSTROKE = "CTRL-Z"
PRE_LOGIN_KEYSTROKE = "CR"
PRE_LOGIN_KEYSTROKE = " "
PRE_LOGIN_KEYSTROKE = "Y"
Some devices that require pre-login keystrokes prompt with a message. If this is the case, the pre-login message should be set. This ensures the keystrokes are not sent until the message prompt is displayed.
PRE_LOGIN_MESSAGE = "Press CTRL-Y to continue"
Some devices require keystrokes to be sent after to login. For example, at a menu to get to the CLI prompt. You can specify more than one
Post Login Keystoke item. For example, if you needed to press the space bar twice after log in, include two
Post login keystokes lines, each sending a single space.
POST_LOGIN_KEYSTROKE = "CTRL-Y"
POST_LOGIN_KEYSTROKE = "CTRL-Z"
POST_LOGIN_KEYSTROKE = "CR"
POST_LOGIN_KEYSTROKE = " "
POST_LOGIN_KEYSTROKE = "Y"
Some devices that require post-login keystrokes prompt with a message. If this is the case, the post-login message should be set to ensure the keystrokes are not sent until the message is displayed. This should be part of the text that appears in a menu prior to keys strokes being sent to enter the CLI.
POST_LOGIN_MESSAGE = "Press C to enter the CLI"
Full Prompt Values
CatTools normally determines the device host name and the specified prompts determine the full VTY, enable and config prompt. Should CatTools not be able to do this for your device you can specify the full values. If any of the below four values are used as an override CatTools does not try to determine the host name for the device. Generally speaking, if you intend to use any of the below you should specify values for all four items.
FULL_HOSTNAMEID = "Cisco2950"
FULL_VTYPROMPT = "Cisco2950>"
FULL_ENABLEPROMPT = "Cisco2950#"
FULL_CONFIGPROMPT = "Cisco2950("
When CatTools waits for a response from a device it waits for a specified period of time, normally 30 seconds, and if no data is returned, timeouts. For certain commands which are known to produce more output, such as show commands, this default timeout is increased using a multiplier, normally by 4. If you have a device which is particularly slow, you can increase the default timeout from 30 seconds.
Some devices include spurious escape or ANSI or Null characters in their output. Functionality to remove these from the buffer as the data is captured can be turned on if required.
RESPONSE_STRIP_VT100ESC = "1"