[Contents] [Prev] [Next] [Index] [Report an Error]

Detecting Invalid Command Formats

In this example, the following macro file (badInterfaceCommand.mac) performs a loop. Within each loop, the CLI executes the interface fastEthernet command using an invalid interface format:

<# badInterfaceCommandMacro #>
<# env.setResult("runStatus","start" ) #>
<# theLoopCount := 500 #>
conf t
<# while theLoopCount > 0 #>
<# env.setResult("runStatus", "Loop:" $ theLoopCount ) #>
interface fastEthernet <# theLoopCount; '\n' #>
<# --theLoopCount #>
<# endwhile #>
<# env.setResult("runStatus","complete" ) #>
<#endtmpl#>
<# onError #>
<# env.setResult("commandError", env.getErrorCommand) #>
<# env.setResult("commandErrorStatus", env.getErrorStatus) #>
<#endtmpl#>

If the macro were to run to completion, the CLI would execute the commands as follows:

interface fastEthernet 500
interface fastEthernet 499
.
.
.
interface fastEthernet 1

Because the macro uses invalid interface formats, executing the macro without the embedded onError macro would result in error output for each loop. However, the onError macro detects the error and stops the macro. Using the onError macro, the output appears as follows:

host1(config)# macro testInterfaceCommand.mac badInterfaceCommandMacro 
Macro 'badInterfaceCommandMacro' in file 'testInterfaceCommand.mac' starting execution (Id: 402)
Enter configuration commands, one per line.  End with ^Z.
ERX-40-94-fb(config)#interface fastEthernet 500
                                            ^
% invalid interface format
Macro 'badInterfaceCommandMacro' in file 'testInterfaceCommand.mac' ending execution (Id: 402)

You can determine the execution progress through the runStatus result entry in the macroData log file. For this example, the runStatus value of 500 indicates that the macro ended early.

host1(config)# show log data category macroData severity debug
NOTICE 01/07/2006 09:46:57 macroData: Macro 'badInterfaceCommandMacro' in file 'testInterfaceCommand.mac' starting execution (Id: 402) on vty, 0
ERROR 01/07/2006 09:46:57 macroData: (Id: 402) Command error:  interface fastEthernet 500, Command execution error
NOTICE 01/07/2006 09:46:57 macroData: (Id: 402) commandError is interface fastEthernet 500
NOTICE 01/07/2006 09:46:57 macroData: (Id: 402) commandErrorStatus is Command execution error
NOTICE 01/07/2006 09:46:57 macroData: (Id: 402) runStatus is Loop:500
NOTICE 01/07/2006 09:46:57 macroData: Macro 'badInterfaceCommandMacro' in file 'testInterfaceCommand.mac' ending execution (Id: 402) on vty, 0

[Contents] [Prev] [Next] [Index] [Report an Error]