This section provides a complete script example the following script examples:
- A script that executes a Cisco Connectivity Fault Management feature update job on a series of Cisco 3400 switches.
- A script that that allows copying a file to a device via SCP.
Script for Cisco Connectivity Fault Management Feature Update Job
Note the extended series of configuration commands in the trigger trigger process-CFM.
###########################################################################
## Export of Script: CFM Update
## Script-Level: 2
...
## Script-Category:
###########################################################################
...
Script:
CFM Update
Script-Description: A script to dynamically configure CFM on switches
...
Script-Filter:
...
$Vendor eq "Cisco" and $Model like /3400/
...
#######
...
Action:
...
Determine CFM
...
Action-Description:
...
Do a show CFM to determine if a device already has CFM.
Action-Commands:
...
SET: $cfm_exists = "yes"
...
show ethernet cfm maintenance-points local
...
Output-Triggers:
...
Check CFM
...
########
...
Trigger:
...
Check CFM
...
Trigger-Description:
...
If CFM is already enabled on the device, we will update the cfm_exists variable to yes
...
Trigger-Template:
...
Local MEPs\: None
...
Trigger-Commands:
...
SET: $cfm_exists = "no"
...
#######
...
Action:
...
Get CFM Variables
...
Action-Description:
...
Perform a "show run interface Gi0/1" to get the existing VLAN information.
...
Action-Filter:
...
$cfm_exists eq "no"
...
Action-Commands:
...
sho run interface Gi0/1
...
SET: $correct_vlan = "no"
...
SET: $UpdateMade = "no"
...
Output-Triggers:
...
Process CFM
...
Incorrect VLAN
...
#######
...
Trigger:
...
Process CFM
...
Trigger-Description: Parse the output of the show run to get the vlan numbers.
...
Trigger-Variables:
...
$vlan integer
...
Trigger-Template:
...
switchport trunk allowed vlan 2
...
[
...
[$vlan
...
]
...
],3\d+
...
Trigger-Commands:
...
SET: $correct_vlan = "yes"
...
SET: $UpdateMade = "yes"
...
config t
...
ethernet cfm ieee
ethernet cfm global
...
ethernet cfm traceroute cache
...
ethernet cfm traceroute cache size 200
...
ethernet cfm traceroute cache hold-time 60
...
ethernet cfm mip filter
...
ethernet cfm alarm notification all
...
ethernet cfm domain Slight level 4
...
service vlan-id 2$vlan vlan 2$vlan
...
mep mpid 6$vlan
...
continuity-check
...
continuity-check interval 1s
...
continuity-check loss-threshold 2
...
mip auto-create
...
service vlan-id 3$vlan vlan 3$vlan
...
mep mpid 7$vlan
...
continuity-check
...
continuity-check interval 1s
...
continuity-check loss-threshold 2
...
mip auto-create
...
ethernet cfm lck link-status global
...
disable
...
ethernet cfm ais link-status global
...
disable
...
ethernet evc 2$vlan
...
oam protocol cfm svlan 2$vlan domain Slight
ethernet evc 3$vlan
...
oam protocol cfm svlan 3$vlan domain Slight
...
Int g0/1
...
No service-policy input CoS
...
No service-policy output parent-shape-1Gb/s
...
No l2protocol-tunnel
...
exit
...
No policy-map parent-shape-1Gb/s
...
No policy-map child-shape-100Mb/s
...
No policy-map CoS
...
No policy-map TXQ
...
policy-map child-shape-100Mb/s
...
class class-default
...
shape average 100000000
...
policy-map parent-shape-1Gb/s
...
class class-default
...
shape average 1000000000
...
service-policy child-shape-100Mb/s
...
policy-map 100Mb/s
...
class class-default
...
trigger-commands:
...
{$Version like /12\.2\(55\)/
...
}
...
police cir 100m conform-action transmit exceed-action drop
...
trigger-commands:
...
{$Version not like /12\.2\(55\)/
...
}
...
police cir 100m pir 100m conform-action transmit exceed-action drop violate-action drop
...
trigger-commands:
...
Int g0/1
...
Service-policy input 100Mb/s
...
Service-policy output parent-shape-1Gb/s
...
ethernet cfm mep domain Slight mpid 3$vlan vlan 3$vlan
...
cos 7
...
ethernet cfm mep domain Slight mpid 2$vlan vlan 2$vlan
...
cos 7
...
no ethernet cfm ais link-status
...
########
...
Action:
...
End and Write Memory
...
Action-Description:
...
End and Write Memory only if we entered config mode.
Action-Commands:
...
{$UpdateMade eq "yes"
...
}
...
end
...
DEBUG:write mem
...
########
...
Issue:
Incorrect VLAN
...
Issue-ID:
Incorrect_VLAN_CFM
...
Issue-Severity:
error
...
Issue-Description:
This device could not be upated by the CFM script
...
Issue-Filter:
$correct_vlan eq "no"
...
Issue-Details:
Host $Name
Address $IPAddress
Script for Copying a File to a Device via SCP
###########################################################################
## Export of Script: SSH file copy
## Script-Level: 3
## Script-Category: Uncategorized
###########################################################################
Script:
SSH file copy
Script-Description:
This script copies a file from a Cisco NX-OS device to
the Backup folder of NetMRI
Script-Filter:
$Vendor eq "Cisco" and
$sysDescr like /NX-OS/
Script-Variables:
$server string ""
$vrf string "management"
$new_file_name string "switch-router.conf"
$scp_username string ""
$scp_password password ""
#########################################################################
Action:
File copy
Action-Description:
Copy the new image file from the remote host via SCP
Action-Timeout:
120
# Overriding the prompt. NetMRI stops doing this action when meets this prompt
Action-Prompt: /(Are you sure you want to continue connecting.*$)|(.*'s password:)/
Action-Commands:
copy bootflash:$new_file_name scp://$server/Backup/$new_file_name\r$vrf\r$scp_username\r
Output-Triggers:
RSA warning prompt
Enter scp password
#########################################################################
Trigger:
RSA warning prompt
Trigger-Description:
This trigger detects RSA warning prompt during attempt to connect via SSH and automatically answer 'yes'
# Overriding the prompt. NetMRI stops doing this action when meets this prompt
Trigger-Prompt: /.*'s password:/
# Not the last line of RSA warning, because the last line is new prompt
# and it was cutted, so this trigger couldn't analyze it
Trigger-Template:
The authenticity of host .* can't be established
Trigger-Commands:
yes
Output-Triggers:
Enter scp password
#########################################################################
Trigger:
Enter scp password
Trigger-Description:
This trigger detects invitation to enter password and send the password to the device
# Override to old prompt
# THIS REGEX IS FOR CISCO PROMPT, PLEASE CHANGE IF YOU WANT TO RUN THIS JOB ON A DEVICE WITH ANOTHER VENDOR
Trigger-Prompt: /[\\r\\n]+[^\\r\\n]*[^>#]+?(>|#)[ ]?$/
# SSH banner of NetMRI (couldn't use string ends with 'password:' by the reason like in the previous trigger)
Trigger-Template:
ALL UNAUTHORIZED .*
Trigger-Commands:
$scp_password\r