forked from extremenetworks/ExtremeScripting
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathxbd.xsf
More file actions
187 lines (163 loc) · 5.05 KB
/
Copy pathxbd.xsf
File metadata and controls
187 lines (163 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# @METADATASTART
#@DetailDescriptionStart
#############################################################################
#
# Script : Automatic Backup Script
# Revision : 2.0
# EXOS Version(s) : 12.3.x and Newer
# Last Updated : 2 Feb 2012
#
# Purpose:
# Run automated back up on all scripts, including configuration, policies, and scripts. Benefits
# include simple rollback and configuration history.
#
# Note: The lack of whitespace in UPM is due to 5000 character limit in Dynamic scripts
#
# Author : Extreme Extensibility Team
# Contact : https://community.extremenetworks.com/
###############################################################################
# Change Log
#
# 18 March 2009: Script Created
# 19 April 2010: Added Change Log
# 21 April 2010: Updated to include default config load for Interactive Recovery
# 2 February 2012: Total Re-write to use SNMP Get at CLI and fix issues
###############################################################################
#@DetailDescriptionEnd
enable cli scripting
# Creating the Backup UPM
create upm profile loginbackup
#####
# Caveats: No checking for tftp upload file length
#####
# Work Around entry for loop protection
disable clip
enable cli scripting
#enable cli scripting output
#####
# Configurable Variables for use
#####
set var tftp 172.16.254.78
set var vrtr vr-mgmt
#####
# Start Functions
#####
set var cli.out 0
ls
set var lslist $tcl(split ${cli.out} "\n")
set var lslistlen $tcl(llength $lslist)
#####
# Getting some Information out of SNMP: SysName
#####
set var cli.out 0
show snmp get 1.3.6.1.2.1.1.5.0
set var snmpnameraw $tcl(split ${cli.out} " ")
set var snmpsearch $tcl(regexp -nocase {=} $snmpnameraw)
set var snmpsearch ($snmpsearch + 1)
set var sysname $tcl(lindex $snmpnameraw $snmpsearch)
#####
# Done
#####
#####
# Gettng some Information out of SNMP: Switch Serial
#####
set var cli.out 0
show snmp get 1.3.6.1.2.1.47.1.1.1.1.11.1
set var snmpnameraw $tcl(split ${cli.out} " ")
set var snmpsearch $tcl(regexp -nocase {=} $snmpnameraw)
set var snmpsearch ($snmpsearch + 1)
set var syssn $tcl(lindex $snmpnameraw $snmpsearch)
#####
# Done
#####
#####
# Getting your selected config for individual backup
#####
set var cli.out 0
show switch
set var slist $tcl(split ${cli.out} "\n")
set var slistsearch $tcl(lsearch -regexp $slist {Config Selected:})
set var slist $tcl(lindex $slist $slistsearch)
set var slist $tcl(split $slist " ")
set var slistsearch $tcl(lsearch -regexp $slist {.cfg})
set var slist $tcl(lindex $slist $slistsearch)
#####
# Getting System Time
#####
set var baseSystemTime $TCL(clock seconds)
set var systemTime $TCL(clock format $baseSystemTime -format {%y%m%H%M})
#####
# Doing some string manipulation and formatting
#####
set var syssnlen $tcl(string bytelength $syssn)
set var sysnamelen $tcl(string bytelength $sysname)
set var sysnamelen ($sysnamelen - 1)
set var systimelen $tcl(string bytelength $systemTime)
set var systimelen ($systimelen - 1)
set var current c$(syssn)$(systemtime)
set var currnet $tcl(join $current)
set var current $tcl(string replace $current $syssnlen $syssnlen {})
set var currentlen $tcl(string bytelength $current)
set var currentlen ($currentlen - 1)
set var upload $(current)
set var current $(current).cfg
#####
# Uploading current config
#####
tftp put $tftp vr $vrtr $slist $current
create log entry "Current configuration loaded as $(current)"
#####
# Starting the loop to upload all files
#####
set var count 0
while ($count < $lslistlen) do
set var curr $tcl(lindex $lslist $count)
set var curr $tcl(split $curr " ")
set var currlen $tcl(llength $curr)
set var currlen ($currlen - 1)
set var curr $tcl(lindex $curr $currlen)
####
# Getting all policies
####
set var tmpcfg $tcl(regexp -all {.pol} $curr)
if ($tmpcfg) then
set var ul $(upload)$(curr)
set var ul $tcl(join ul)
set var ul $tcl(string replace $ul $currentlen $currentlen {})
tftp put $tftp vr $vrtr $curr $ul
endif
####
# Getting all configs
####
set var tmpcfg $tcl(regexp -all {.cfg} $curr)
if ($tmpcfg) then
set var ul $(upload)$(curr)
set var ul $tcl(join ul)
set var ul $tcl(string replace $ul $currentlen $currentlen {})
tftp put $tftp vr $vrtr $curr $ul
endif
####
# Getting all scripts
####
set var tmpcfg $tcl(regexp -all {.xsf} $curr)
if ($tmpcfg) then
set var ul $(upload)$(curr)
set var ul $tcl(join ul)
set var ul $tcl(string replace $ul $currentlen $currentlen {})
tftp put $tftp vr $vrtr $curr $ul
endif
set var count ($count + 1)
endwhile
del var "cli.out"
create log entry "Automated Backup Ran"
.
# Here we configure the UPM to have a liberal execution time.
configure upm profile loginbackup maximum execution-time 1000
create log target upm loginbackup
create log filter autologfilter
# This will trigger on any AuthPass. If you have Epicenter Modify this to match strings
configure log filter autologfilter add event AAA.AuthPass
configure log target upm loginbackup filter autologfilter
enable log target upm loginbackup
enable upm profile loginbackup
create log entry "UPM loginbackup successfully created"