NX-OS Command Sender (Exec Level) (nxos_send_cmds)

Top  Previous  Next

This program will send any number of commands to a single Cisco Nexus switch or a list of NX-OS devices.  The commands that are sent are defined in a text file (any name), that you create, or specified directly on the command line using the -cmd option.  This script is different than the nxos_config_cmds script in that this script was primarily designed to send NX-OS “exec” level commands.  In other words, non-configuration commands.  The commands are sent in sequential order from top to bottom of the file or the order in which they are defined if using the -cmd options.  This script can also send configuration commands but the actual commands to enter and exit configuration mode must also be included in the list of commands to send.

 

Note, for global Cisco configuration changes to NX-OS devices, the nxos_config_cmds script is the preferred tool as that script has more comprehensive error checking designed for configuration commands only. 

 

Program Name: nxos_send_cmds

 

Script Argument

Description

-rf <filename>

List of switches or IP Address/(DNS hostname) to run script against (REQUIRED -rf or -ipaddr)

 

NOTE: Cannot use the -ipaddr and the -rf option at the same time!

-ipaddr <ip_address or routername>

IP address or switch name (if defined in hosts file or DNS)

Use -ipaddr to send commands to a single device or -rf to send commands to list of devices specfied in file.  (REQUIRED -rf or -ipaddr)

 

NOTE: Cannot use the -ipaddr and the -rf option at the same time!

-cf <filename>

File which contains a list of commands to send to switches.  One command per line.  Lines that begin with a “#” are considered comments and will not be sent to the router.

(REQUIRED -cf or -cmd)

 

NOTE: Cannot use the -cf and the -cmd option at the same time!

-cmd <command>

Command to send to switch.  Useful when only needing to send a few commands to a single device or list of devices.  It saves you the time of having to create a text file with only a few commands in it.  If the command contains spaces then it must be enclosed in double quotes (only when running script from cli, not GUI). This option can be used up to 7 times when used with the GUI.  The command line version of this script can repeat this option an unlimited number of  times.  However, for more than 5 to 7 commands, it is recommended to put the commands in a text file and use the -cf option. (REQUIRED -cf or -cmd)

 

NOTE: Cannot use the -cf and the -cmd option at the same time!

 

Example:

-cmd "show tech"

-testmode

Test Mode. Build and display the commands that would have been sent to the devices but DO NOT actually connect to the devices and send the commands.  Useful for confirming command looping and variable substitutions are correct or for just double checking the commands that will be sent .  List of commands are

also written to the file $SCRIPT_HOME/<script_name>_sample_cmds.txt".

(OPTIONAL)

-wm

Saves configuration file to NVRAM after sending the commands.  This option performs a “write memory” (i.e., copy running-config to startup-config) on the router.  (OPTIONAL)

-dir <directory>

If specified, tells script to save output for each device into a separate file.  Files will be saved to the directory specified.  If the directory does not exist, the script will create it.  By default output for all devices is only saved to the detailed trace file.  The directory entered can be either an absolute directory or a relative directory.  If running the script from the GUI, a relative directory is relative to the “SCRIPT_HOME” variable. (From the GUI see Options->Settings). (OPTIONAL)

-autodir <date | time>

Automatically create new unique directory to save output for each device into a separate file.  The choices are date or time

 

The date option will create a new directory consisting  of just the date

e.g. 08012010 for Aug 1st 2010. 

 

The time option will append the time to the date:

e.g. 08012010_12h36m15s

 

If used with the -dir option, the new unique directory will be created under the -dir directory.  If the -dir option is not used, then the new unique directory will be created under the SCRIPT_HOME directory.  Note, if the date option is used and that directory name happens to all ready exist, then files in that directory will be overwritten. There are no safety prompts for the user when using this option.

-urfn

Use Route File Name.  When saving the output data to a separate file for each device, the filename used will be the name/IP Address stated in the rf file.  The default filename is the router hostname configured on the router.  This option only applies when used with the dir option. (OPTIONAL)

-safe

Safe Mode.  If an error occurs while sending a configuration command to a router in the list, all subsequent commands to that router will not be sent.  The script will continue on to the next router on the list and continue sending commands.  (OPTIONAL)

-ssafe

SuperSafe Mode.  Abort Script if there is an error while sending any of the configuration commands to any of the routers. (OPTIONAL)

-nokey

Dont prompt user for encryption key when using encrypted password file.  (OPTIONAL)

-ssh

Use Secure Shell when accessing routers.  Do NOT use with -pw option. (OPTIONAL)

-pw <filename>

Login/Password File.  (OPTIONAL)

-log <filename>

Save detailed trace file to a name other than the default file name.  (OPTIONAL)

-ulog

Unique Log file.  Save detailed trace log file to a Unique filename automatically created by script. Filename will be in format of scriptname_timestamp.log. (OPTIONAL)

 

The command file (-cf <filename>) should contain a list of commands that will be sent to each router.  This is not a TCL file, it is a plain text file that must contain one command per line.  Lines that begin with a “#” are considered comments and will not be sent to the router as a command.

 

The following commands can be entered in the command file and the router will automatically answer any additional confirmations or prompts.

(Note, output of the commands listed below will NOT be displayed in the contents of individual output files when using the -dir option)

 

Command

Description

reload

The Cisco NXOS reload command requires confirmation after entering the command in the CLI.  The script will automatically send the confirmation to reload the box.  Note, after entering the reload command, the device could respond with a message stating “WARNING: There is unsaved configuration!!!” If this happens, the script will NOT reload the switch, it will log an error message and exit from the device.

 

Note, do not use the reload command in the input file and the -wm option on the command line together. If you wish to perform a write mem before issuing a reload, then add the "copy running-config startup-config" to the input command file before the reload command.  [This is because the -wm is performed after all of the commands in the input file are issued but the reload command will terminate the telnet session and the write mem (i.e., copy running-config startup-config) can no longer be performed]

copy running-config startup-config

copy run startup

If the script sees any of these string as one of the commands to send, internally it will run a separate procedure that verifies the copy was successful.  Note, the -wm command line option could also be used to save the configuration to NVRAM.

SLEEP <seconds>

The SLEEP command is not a command that will be sent to the switch.  If desired, this is a method to introduce a delay between commands.  Seconds can be a whole integer (e.g. 2) or a real number (e.g. 1.5).  The SLEEP command must be entered in all CAPITAL letters otherwise it will be interpreted as a command to send to the switch.  It must also start at the beginning of the line (no leading spaces or tabs).  Note, this is not typically needed but may be useful if you would like to watch the script as it is running to visually inspect the output of a particular command.

RETURN

Using the keyword RETURN is equivalent to sending just a carriage return or Enter key.  Not commonly used. CASE SENSITIVE

LOOPSTART <num>

or

LOOPEND

Allows the capability to send the same command(s) over and over, a specified number of times.  The command(s) that will repeated are the commands between the LOOPSTART and LOOPEND commands.  See Command Looping for more information.

COUNTERVAR <variable> <start_num>

Define a counter variable. Provides a method to define a variable in in the command file; it must be used with the LOOPING feature.  The variable must be a single alphabet character.  "start_num" is the number that the counter will start at.  In will increment by one each time through the LOOP.  See Counter Variables for more information.

 

The following is a sample command file which performs a show interface, then pauses for 15 seconds because the user wishes to visually examine the output of the show interface command (in real time).  Then it clears the counters.

 

show interface
SLEEP 15
clear counters

 

 

If you wish the running config saved to NVRAM, then the wm option must be used.  By default, the configuration commands will not be saved to NVRAM. 

 

This program also has the option to be run in Safe and SuperSafe mode which should be considered when running scripts in production environments.

 

Sample Command 1: The following command will send the commands listed in file show_cmds.txt to the NX-OS devices listed in the file lab_switches.txt. If there are any errors while issuing any of the commands, the script will immediately terminate because of the ssafe option (SuperSafe Mode).  The script will not prompt the user for passwords because the passwords are being read in from the logins.txt file (-pw option).

 

nxos_send_cmds -pw logins.txt rf lab_switches.txt cf show_cmds.txt ssafe

 

Sample Command 2: The following script will send a "show tech" to the switch 192.168.0.10The output will be saved to the file show_tech_switch1.log  The script will not prompt the user for passwords because the passwords are being read in from the logins.txt file (-pw option).

 

nxos_send_cmds -log show_tech_switch1.log -pw logins.txt –ipaddr 192.168.0.10 cmd "show tech"

 

 

Sample Command 3: The following script will issue the command "show interface | incl error" 10 times, sleeping for 5 seconds between each time the command is entered.  The commands will be sent to the switch 192.168.0.10If there are any errors while issuing any of the commands, the script will immediately terminate because of the safe option (Safe Mode).  The script will not prompt the user for passwords because the passwords are being read in from the logins.txt file (-pw option).

 

Note, the backslash at the end of each line will only work in a Linux/Unix shell.

 

nxos_send_cmds -pw logins.txt –ipaddr 192.168.0.10 -safe \

       -cmd "LOOPSTART 10" \

       cmd "show int | incl error" \

       -cmd "SLEEP 5" -cmd LOOPEND