Примеры скриптов в 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 • Скриптование • Примеры скриптов |