Примеры скриптов в ExtremeXOS
Материал из Xgu.ru
Здесь описываются основные с практической точки зрения моменты по настройке и взаимодействию с ExtremeXOS на коммутаторах от Extreme Networks. В качестве основного источника информации используется ExtremeXOS Concepts Guide.
Содержание |
[править] Пример 1
Создание 100 вланов с ip-адресами 10.1.1.1/16 - 10.100.1.1/16
enable cli scripting set var count 1 while ($conut < 101) do create vlan v$count configure vlan v$count tag $count configure vlan v$count ipaddress 10.$(count).1.1/16 set var count ($count + 1) endwhile show vlan
[править] Пример 2
Осуществление 60-секундной задержки перед продолжением выполнения.
set var temp $TCL(after [expr 60*1000])
[править] Пример 3
Отображение даты и времени.
set var CLI.OUT 0
show switch
set var date $TCL(lrange ${CLI.OUT} 27 29)
set var year $TCL(lrange ${CLI.OUT} 31 31)
set var date $TCL(linsert $date 3 $year)
set var time $TCL(lrange ${CLI.OUT} 30 30)
show var date
show var time
[править] Пример 4
Сортировка FDB в сторону уменьшения.
set var CLI.OUT 0
show fdb
set var x1 $TCL(split ${CLI.OUT} "\n")
set var x2 $TCL(lsort -decreasing $x1)
set var output $TCL(join $x2 "\n")
show var ouput
[править] Пример 5
Получение fdb age маков.
set var CLI.OUT 0
show fdb
set var input $TCL(split ${CLI.OUT} "\n")
set var y1 $TCL(lsearch -glob $input *age*)
set var y2 $TCL(lindex $input $y1)
set var y3 $TCL(split $y2 " ")
set var y4 $TCL(lindex $y3 0)
show var y4
[править] Пример 6
Контрль широковещательных штормов.
Эта фича экспериментальная, пока не доработана в продакшене не используем.
config port 1-23 rate-limit flood broadcast 5000 - установка порога (в пакетах в секунду), при превышении которого блочить порт. create upm profile bcast_rt_lim_pdown - формируем профайл следующего содержания:
enable cli scripting
disable clipaging
set var CLI.OUT " "
show ports 1-24 rate-limit flood no-refresh
set var rlf_strings $TCL(split ${CLI.OUT} "\n")
set var num_strings_rlf $TCL(llength $rlf_strings)
set var count 4
while ($count < ($num_strings_rlf-4)) do
set var rate_exceeded $TCL(lindex $rlf_strings $count)
set var rate_exceeded $TCL(string range $rate_exceeded 69 81)
if ($rate_exceeded != "0") then
set var numprt ($count-3)
disable port $numprt
create log entry "STORM_CONTROL_SCRIPT: disable port $numprt by flood rate-limit"
clear counters ports
delete var numprt
endif
set var count ($count+1)
endwhile
delete var CLI.OUT
delete var rlf_strings
delete var num_strings_rlf
delete var count
delete var rate_exceeded
.
create upm timer bcast_rt_lim_pdown_timer - создаём таймер. configure upm timer bcast_rt_lim_pdown_timer profile bcast_rt_lim_pdown - делаем таймер тригером профайла. configure upm timer bcast_rt_lim_pdown_timer after 10 every 10 - запускаем таймер через 10 сек с отсчётами в 10с. configure log filter "DefaultFilter" add exclude events UPM.Msg.upmMsgExshLaunch - чтобы не засорять лог сообщениям о запуске.
[править] Пример 7
Скрипт createVlanAddPort.xsf создаёт вланы из диапазона и разбрасывает их на указанные порты. Имена вланов соответствуют шаблону vlan_<x>, где <x> - номер влана. Использование:
load script createVlanAddPort.xsf <VLANS> <PORTS>
пример:
load script createVlanAddPort.xsf 500-599,650-657,310 4,12-15,8 - создаёт вланы 310 и все в диапазонах от 500 до 599 и с 650 до 657
и разбрасывает их в порты 4, с 12 по 15, и в 8.
текст:
#
# Usage:
# load script createVlanAddPort.xsf $VLANS $PORTS
#
set var i 0
set var vlanId 0
set var vlanList $TCL(split ${CLI.ARGV1} ",")
set var vlanListLength $TCL(llength ${vlanList})
set var portList $TCL(split ${CLI.ARGV2} ",")
set var rangeMark "\-"
set var vlanId $TCL(lindex ${vlanList} $i)
while ($i < $vlanListLength) do
set var rangeMatch $TCL(regexp -all ${rangeMark} ${vlanId})
if ($rangeMatch > 0) then
set var vlanIdRange $TCL(split ${vlanId} "-")
set var vlanIdStart $TCL(lindex ${vlanIdRange} 0)
set var vlanIdEnd $TCL(lindex ${vlanIdRange} 1)
set var vlanId $vlanIdStart
while ($vlanId < $vlanIdEnd+1) do
create vlan vlan_$vlanId
configure vlan vlan_$vlanId tag $vlanId
configure vlan vlan_$vlanId add port $portList tag
set var vlanId ($vlanId + 1)
endwhile
else
create vlan vlan_$vlanId
configure vlan_$vlanId tag $vlanId
configure vlan vlan_$vlanId add port $portList tag
endif
set var i ($i + 1)
set var vlanId $TCL(lindex ${vlanList} $i)
endwhile
[править] Пример 8
Скрипт addVlanPortToMsti.xsf назначает указанные вланы на нужных портах в определённый инстанс MSTP. Использование:
load script addVlanPortToMsti.xsf <VLANS> <PORTS> <MSTI_name>
пример:
load script addVlanPortToMsti.xsf 2-199 25-26 mst5 - к MSTI инстансу с именем mst5 на портах 25-26 привызяваются вланы 2-199.
текст:
set var i 0
set var vlanId 0
set var vlanList $TCL(split ${CLI.ARGV1} ",")
set var vlanListLength $TCL(llength ${vlanList})
set var portList $TCL(split ${CLI.ARGV2} ",")
set var rangeMark "\-"
set var vlanId $TCL(lindex ${vlanList} $i)
set var msti $CLI.ARGV3
while ($i < $vlanListLength) do
set var rangeMatch $TCL(regexp -all ${rangeMark} ${vlanId})
if ($rangeMatch > 0) then
set var vlanIdRange $TCL(split ${vlanId} "-")
set var vlanIdStart $TCL(lindex ${vlanIdRange} 0)
set var vlanIdEnd $TCL(lindex ${vlanIdRange} 1)
set var vlanId $vlanIdStart
while ($vlanId < $vlanIdEnd+1) do
configure stpd $msti add vlan vlan_$vlanId ports $portList dot1d
set var vlanId ($vlanId + 1)
endwhile
else
configure stpd $msti add vlan vlan_$vlanId ports $portList dot1d
endif
set var i ($i + 1)
set var vlanId $TCL(lindex ${vlanList} $i)
endwhile
[править] Пример 9
Скрипт setupVlansToPorts.xsf добавляет или удаляет указанные существующие вланы с/на указанные порты. Использование:
load script setupVlansToPorts.xsf <VLANS> <PORTS> <add | delete>
пример:
load script setupVlansToPorts.xsf 300-600 9,17-20 add - добавляет вланы 300-600 на порты 9,17,18,19,20
load script setupVlansToPorts.xsf 100-150 19,11 delete - удаляет вланы 100-150 с портов 11 и 19.
текст:
#
# USAGE: load script setupVlansToPorts.xsf <vlans> <ports> <add|delete>
# EXAMPLE: load script setupVlansToPorts.xsf 250-251 11-12 add
#
set var i 0
set var vlanId 0
set var vlanList $TCL(split ${CLI.ARGV1} ",")
set var vlanListLength $TCL(llength ${vlanList})
set var portList $TCL(split ${CLI.ARGV2} ",")
set var ACTION $(CLI.ARGV3)
set var rangeMark "\-"
set var vlanId $TCL(lindex ${vlanList} $i)
while ($i < $vlanListLength) do
set var rangeMatch $TCL(regexp -all ${rangeMark} ${vlanId})
if ($rangeMatch > 0) then
set var vlanIdRange $TCL(split ${vlanId} "-")
set var vlanIdStart $TCL(lindex ${vlanIdRange} 0)
set var vlanIdEnd $TCL(lindex ${vlanIdRange} 1)
set var vlanId $vlanIdStart
while ($vlanId < $vlanIdEnd+1) do
if ("$(ACTION)" == "add") then
configure vlan vlan_$vlanId add port $portList tag
endif
if ("$(ACTION)" == "delete") then
configure vlan vlan_$vlanId delete port $portList
endif
set var vlanId ($vlanId + 1)
endwhile
else
if ("$(ACTION)" == "add") then
configure vlan vlan_$vlanId add port $portList tag
endif
if ("$(ACTION)" == "delete") then
configure vlan vlan_$vlanId delete port $portList
endif
endif
set var i ($i + 1)
set var vlanId $TCL(lindex ${vlanList} $i)
endwhile
[править] Дополнительная информация
[править] Примечания
| Extreme Networks | ||
|---|---|---|
| ExtremeXOS | ExtremeXOS | |
| Управление платформой | Управление конфигурациями • Файловая система • BootStrap • Управление Image-файлами • Настройка удалённого управления • SNMP • Параметры журналирования • SNTP (периодический опрос серверов NTP) • Настройка слотов расширений • Другие сервисные функции | |
| Базовый функционал коммутации (L2) |
Настройка портов • Функции таблицы коммутации • VLAN • STP • Агрегирование каналов • LLDP • Зеркалирование портов | |
| Маршрутизация (L3) | IP-интерфейсы (SVI) • Virtural Routers • Маршрутизация L3 • OSPF • BGP | |
| Прочее | ACL • QoS • Скриптование • Примеры скриптов | |