Documentation forKiwi CatTools

Device Variations

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?

The 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 Variations\Groups folder.

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: ...CatTools\Variations\Groups\HeadOffice\Juniper.Router.txt

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.

Login Prompts

These are the prompts that the device displays when it asks for a user name or a password.


Mode Prompts

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 ">".


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(config) and Cisco2950(Config-if) because 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"

Yes/No Text

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.


Device Commands

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.


The commands to enter or leave config mode.

  • COMMAND_ENTERCONFIG = "configure terminal"

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_PING = "ping"

Backup Ignore Text

The 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"

Pre-Login Keystroke

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 Message

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"

Post-Login Keystroke

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 Message

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("

Data Timeout

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.


Strip Characters

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.