Скрипт для настройки коммутаторов
Всем известно, что операционная система EXOS имеет встроенный скриптовый язык $TCL, существенно расширяющий возможности администрирования оборудования. Не всем известно, что операционная система EXOS имеет технологию UPM (Universal Port Management), позволяющую выполнять скрипты при наступлении какого либо события, аутентификации пользователя, или по времени.
Скрипты
Скриптовый язык в коммутаторах позволяет создавать список команд, которые можно выполнить вручную или автоматически, при наступлении какого либо события. Скрипты позволяют автоматизировать многие рутинные действия администраторов.
Посмотреть разрешен ли cli-scripting, постоянны ли даваемые скриптами команды, режим обработки ошибок:
Включаем режим скриптования.
enable cli scripting [permanent]
permanent — и для новых сессий.
Переключение режима постоянные или временные команды скрипта, временные хранятся до перезагрузки коммутатора.
enable cli mode [persistent|non-persistent]
Настроить режим обработки ошибок скрипта:
configure cli mode scripting [abort-on-errors|ignore-errors]
По-умолчанию ignore errors.
Настройка вывода:
enable|disable cli scripting output
если disable отображаются только команды show vars. Если enable — все команды и результат выполнения.
Каждая сессия имеет свой набор переменных и их занчений. Можно сохранять до 5 переменных за раз перед их заменой, чтобы потом восстановить их значения.
save var key <keyID> [<var1> <var2> <var3>..] — сохранить до 5 значений в keyID.
load var key <keyID> [<var1> <var2> <var3>..] — восстановить до 5 сохранённых в keyID значений в переменные.
delete var key <keyID> — удалить сохранённый набор значений.
Создание скриптов
Существуют 2 режима создания скриптов:
Выполнение скриптов
Осуществляется ручной загрузкой и стартом скрипта, либо с помощью Universal Port. Для ручного выполнения скрипта его надо загрузить на свич и выполнить команду:
Скрипты Universal Port называются профайлами и запускаются при возникновении определённых тригерных событий. Например, обнаружение устройства на порту, потеря устройства на порту, пользовательская аутентификация и разлогинивание.
Варианты отмена выполнения скрипта.
нажать CTRL-C во время выполнения скрипта;
- настроить отмену выполнения при возникновении ошибок: configure cli mode scripting abort-on-error
- в тексте ввести команду return <statusCode> чтобы прекратить выполнение и поместить код возврата в $STATUS.
Переменные
Список предопределённых переменных (доступны во всех скриптах)
$STATUS — результат выполнения последней команды.
Значения от -100 до 100 зарезервированы и устанавливаются автоматически.
Можно переопределить значение командой return <statusCode>
0 — успешное завершение команды;
-53 — переменная не найдена;
-57 — превышена глубина WHILE;
-78 — script timeout.
$CLI.SESSION_TYPE — тип сессии пользователя.
$CLI.SCRIPT_TIMEOUT — создаётся если дана команда команда configure cli script timeout <sec>. Возвращает текущее значение таймаута. Если нет запущенных скриптов, возвращает настроенное значение таймаута.
$CLI.OUT — содержит вывод последней команды show.
Перед использованием необходима инициализация (set var CLI.OUT 0).
После использования необходимо удаление (delete var CLI.OUT).
Определение собственных переменных
set var <name> <expression>
При работе с переменными надо помнить следующее:
- имена чувствительны к регистру, ограничены 32 символами.
- имя переменной должно быть уникально.
- ссылаться на значение переменной можно так: $X или $(X)
- если переменная уже существует, её значение переписывается. Ошибок не выдаётся.
- <expression> может быть константой, другой переменной, комбинацией с использованием операторов и функций.
- только команда set var поддерживает вычисление выражений.
- если переменная содержит специальные символы (+-/*), то должна быть помещена в круглые скобки. — set var z ( ($x) + 100 ).
- если переменная со спец.символами используется в TCL-функции, она должна быть заключена в фигурные скобки: set var $TCL(string length $)
- eсли нужно использовать специальные символы ($«итд) как обычные, их требуется экранировать: \$, \».
Операнды
Поддерживаемые операции в выражениях (в порядке убывания приоритета):
Управляющие структуры
Вложение возможно до 5 уровней. CTRL-C прерывает все циклы.
IF (<expression>) THEN
<statements>
ELSE
<statements>
ENDIF
WHILE(<expresson>) DO
<statements>
ENDWHILE
Встроенные функции
Список поддерживаемых tcl-функций
Вложенные скрипты
ExtremeXOS поддерживает 3 уровня вложенности скриптов. Пример вложенности:
содержание скрипта x1.xsf:
Cmd 1
Cmd 2
load script x2.xsf
Cmd 3
Cmd 4
содержание скрипта x2.xsf:
Cmd 1
Cmd 2
load script x3.xsf
Выполнение скриптов
Выполнение скрптов можно осуществлять через ручной запуск и через возможночти Universal Port.
Для выполнения скрипта, загрузки скрипта на коммутатор используется команда: load script <filename> …
Запуск скриптов Universal Port
Скрипты Universal port называются профили и выполняются различными триггерами, подключение устройста, отключение устройства, авторизация пользователя и выход.
UNIVERSAL PORT MANAGEMENT
Технология UPM (Universal Port Management) позволяет выполнять скрипты на коммутаторе, при наступлении событий.
Основным компонентом UPM являяется профайл, который состоит из скриптового языка, команд коммутатора и выполняется при наступлении того или иного события. Профайл представляет собой файл, находящийся на файловой системе коммутатора.
Профайлы можно получать на сайте Extreme Networks, от разработчиков или создавать самому.
На свиче может быть много профайлов, но одновременно может быть запущенным только один.
Профайлы бывают статические и динамические.
Правила написания профайлов:
- максимум 5000 символов в профайле;
- максимум 128 профайлов на свич;
- профайлы хранятся как часть файла конфигурации свича;
- copy/past — единственный метод для перемещения данных профайла с помощью CLI.
- по-умолчанию статические профайлы всегда persistent а динамические — non-persistent.
Профайл можно запустить вручную, выполнив команду:
run upm profile
Триггеры запуска профайлов
- Device Triggers
- Запускаются, когда устройства подключается (device-detect type) или отключается(device undetect type) от порта. Используются для подготовки настроек порта. Для работы на порту должен быть включён LLDP. На порту может быть один device-detect и один device-undetect профайл.
- User authentication Triggers
- Активируется, когда пользователь или устройство логинится в сети используя фичу Network Login. Для Network Login нужен RADIUS. Так же аутентификация может быть по маку или на основе веба.
- Time Triggers
- Запускают профайлы на основе времени дня или с заданным периодом.
- EMS Triggers
- Обычно используются для изменения настроек свича в ответ на событие свича или сети. События на которые нужно реагировать задаются фильтром. Форматcomponent.subcomponent.condition. Все компоненты и подкомпоненты, для которых можно фильтровать события показываются по команде
show log components
show log enents all — отображает все условия и события которые можно фильтровать.
Команды конфигурации категории Non-Persistent-Capable
В динамических профайлах можно выполнять следующие действия:
Применять ACL по событию:
configure access-list add <dynamic_rule> [ [[first | last] > > ] | after] <rule>] | [ priority<p_number> > [ any | vlan <vlanname> | ports <portlist> ]
configure access-list delete <ruleName> [ any | vlan <vlanname> | ports <portlist> | all]
Изменять политику LLDP на порту:
Включить/выключить PORT (jumbo-frame):
disable port [<port-list>|all]
enable port [<port_list> | all]
disable jumbo-frame ports [<port-list>|all]
enable jumbo-frame ports [<port-list>|all]
Манипуляции с PoE:
configure inline-power label <string> ports <port_list>
configure inline-power operator-limit <milliwatts> ports [all |<port_list>]
configure inline-power priority [critical | high | low] ports <port_list>
disable inline-power
enable inline-power
disable inline-power ports [all | <port_list>]
enable inline-power ports [all | <port_list>]
disable inline-power slot <slot>
enable inline-power slot <slot>
unconfigure inline-power priority ports [all | <port_list>]
Конфигурировать VLAN:
configure <vlan_name> add ports [<port_list> |all] <stpd_name>> >
configure ip-mtu <mtu> vlan <vlan_name>
«Навесить» QoS/RateLimit по событию:
configure ports <port_list> <qosprofile>
Universal Port Variables
Общие переменные (доступны во всех скриптах)
Переменные пользовательских профайлов
Переменные профайлов устройств (device-profile)
Переменные профайлов EMS
Настройка Universal Port
run upm profile <profile-name> > > — ручной запуск профайла для теста.
run upm profile afterhours
Примеры скриптов
Пример 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 $ 27 29)
set var year $TCL(lrange $ 31 31)
set var date $TCL(linsert $date 3 $year)
set var time $TCL(lrange $ 30 30)
show var date
show var time
Пример 4
Сортировка FDB в сторону уменьшения.
set var CLI.OUT 0
show fdb
set var x1 $TCL(split $ «\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 $ «\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 — формируем профайл следующего содержания:
Всем известно, что операционная система EXOS имеет встроенный скриптовый язык $TCL, существенно расширяющий возможности администрирования оборудования. Не всем известно, что операционная система EXOS имеет технологию UPM (Universal Port Management), позволяющую выполнять скрипты при наступлении какого либо события, аутентификации пользователя, или по времени.
Скрипты
Скриптовый язык в коммутаторах позволяет создавать список команд, которые можно выполнить вручную или автоматически, при наступлении какого либо события. Скрипты позволяют автоматизировать многие рутинные действия администраторов.
Посмотреть разрешен ли cli-scripting, постоянны ли даваемые скриптами команды, режим обработки ошибок:
Включаем режим скриптования.
enable cli scripting [permanent]
permanent — и для новых сессий.
Переключение режима постоянные или временные команды скрипта, временные хранятся до перезагрузки коммутатора.
enable cli mode [persistent|non-persistent]
По-умолчанию non-persisten t .
Настроить режим обработки ошибок скрипта:
configure cli mode scripting [abort-on-errors|ignore-errors]
По-умолчанию ignore errors .
Настройка вывода:
enable|disable cli scripting output
если disable отображаются только команды show vars. Если enable — все команды и результат выполнения.
Каждая сессия имеет свой набор переменных и их занчений. Можно сохранять до 5 переменных за раз перед их заменой, чтобы потом восстановить их значения.
save var key <keyID> [<var1> <var2> <var3>.. ] — сохранить до 5 значений в keyID.
load var key <keyID> [<var1> <var2> <var3>..] — восстановить до 5 сохранённых в keyID значений в переменные.
delete var key <keyID> — удалить сохранённый набор значений.
Создание скриптов
Существуют 2 режима создания скриптов:
- просто создаём файл скрипта с командами - если нужно запускать скрипт вручную. Создаём и редактируем скрипт в ASCII-формате любым текстовым редактором, затем заливаем его на свич (tftp, ssh).
- создание скрипта с Universal Port — если нунжо запускать сприпт автоматически по какому-либо событию. Точно так же как и в 1), только с использованием universal port profile.
Выполнение скриптов
Осуществляется ручной загрузкой и стартом скрипта, либо с помощью Universal Port. Для ручного выполнения скрипта его надо загрузить на свич и выполнить команду:
Скрипты Universal Port называются профайлами и запускаются при возникновении определённых тригерных событий. Например, обнаружение устройства на порту, потеря устройства на порту, пользовательская аутентификация и разлогинивание.
Варианты отмена выполнения скрипта.
нажать CTRL-C во время выполнения скрипта;
- настроить отмену выполнения при возникновении ошибок: configure cli mode scripting abort-on-error
- в тексте ввести команду return <statusCode> чтобы прекратить выполнение и поместить код возврата в $STATUS.
Переменные
Список предопределённых переменных (доступны во всех скриптах)
$STATUS — результат выполнения последней команды.
Значения от -100 до 100 зарезервированы и устанавливаются автоматически.
Можно переопределить значение командой return <statusCode>
0 — успешное завершение команды;
-53 — переменная не найдена;
-57 — превышена глубина WHILE;
-78 — script timeout.
$CLI.SESSION_TYPE — тип сессии пользователя.
$CLI.SCRIPT_TIME_REMAINING — создаётся если дана команда configure cli script timeout <sec>
- если скрипт не запущен, содержит значение из настроенного таймаута.
- если скрипт прерван по таймауту, содержит 0.
- если скрипт завершился сам до таймаута, содержит число оставшихся секунд.
$CLI.SCRIPT_TIMEOUT — создаётся если дана команда команда configure cli script timeout <sec>. Возвращает текущее значение таймаута. Если нет запущенных скриптов, возвращает настроенное значение таймаута.
$CLI.OUT — содержит вывод последней команды show.
Перед использованием необходима инициализация (set var CLI.OUT 0).
После использования необходимо удаление (delete var CLI.OUT).
Определение собственных переменных
set var <name> <expression>
set var x 100
set var x ($x + 2)
set var y ($x — 100)
show var [<varname>] - посмотреть все переменные, или значение определённой переменной.
При работе с переменными надо помнить следующее:
Операнды
Поддерживаемые операции в выражениях (в порядке убывания приоритета):
<< смещение влево (только для целочисленных операндов)
<= меньше или равно
>= больше или равно
^ побитовое эксклюзивное ИЛИ
x?y:z if-then-elst (как в C)
Управляющие структуры
Вложение возможно до 5 уровней. CTRL-C прерывает все циклы.
IF (<expression>) THEN
<statements>
ELSE
<statements>
ENDIF
WHILE(<expresson>) DO
<statements>
ENDWHILE
Встроенные функции
$MATCH(string1, string2) - сравнивает 2 строки. Возвращает
-1 string1 меньше string2
0 string1 равна string2
1 string1 больше string2
$READ(prompt) - отображает prompt и ожидает пользовательского ввода. Заверщение ввода по [Return]
$UPPERCASE(string) - возвращает строку в верхнем регистре.
$VAREXISTS(varname) - 0 — если переменная существует, не 0 если переменной не существует.
$TCL(function args) - запуск встроенной TCL-функции.
Список поддерживаемых tcl-функций
Вложенные скрипты
ExtremeXOS поддерживает 3 уровня вложенности скриптов. Пример вложенности:
содержание скрипта x1.xsf:
Cmd 1
Cmd 2
load script x2.xsf
Cmd 3
Cmd 4
содержание скрипта x2.xsf:
Cmd 1
Cmd 2
load script x3.xsf
Выполнение скриптов
Выполнение скрптов можно осуществлять через ручной запуск и через возможночти Universal Port.
Для выполнения скрипта, загрузки скрипта на коммутатор используется команда: load script <filename> < arg1> < arg2>…
Запуск скриптов Universal Port
Скрипты Universal port называются профили и выполняются различными триггерами, подключение устройста, отключение устройства, авторизация пользователя и выход.
UNIVERSAL PORT MANAGEMENT
Технология UPM (Universal Port Management) позволяет выполнять скрипты на коммутаторе, при наступлении событий.
Основным компонентом UPM являяется профайл, который состоит из скриптового языка, команд коммутатора и выполняется при наступлении того или иного события. Профайл представляет собой файл, находящийся на файловой системе коммутатора.
Профайлы можно получать на сайте Extreme Networks, от разработчиков или создавать самому.
На свиче может быть много профайлов, но одновременно может быть запущенным только один.
Профайлы бывают статические и динамические .
Правила написания профайлов:
- максимум 5000 символов в профайле;
- максимум 128 профайлов на свич;
- профайлы хранятся как часть файла конфигурации свича;
- copy/past — единственный метод для перемещения данных профайла с помощью CLI.
- по-умолчанию статические профайлы всегда persistent а динамические — non-persistent.
Профайл можно запустить вручную, выполнив команду:
run upm profile
Триггеры запуска профайлов
- Device Triggers
- Запускаются, когда устройства подключается (device-detect type) или отключается(device undetect type) от порта. Используются для подготовки настроек порта. Для работы на порту должен быть включён LLDP. На порту может быть один device-detect и один device-undetect профайл.
- User authentication Triggers
- Активируется, когда пользователь или устройство логинится в сети используя фичу Network Login. Для Network Login нужен RADIUS. Так же аутентификация может быть по маку или на основе веба.
- Time Triggers
- Запускают профайлы на основе времени дня или с заданным периодом.
- EMS Triggers
- Обычно используются для изменения настроек свича в ответ на событие свича или сети. События на которые нужно реагировать задаются фильтром. Формат component.subcomponent.condition . Все компоненты и подкомпоненты, для которых можно фильтровать события показываются по команде
show log components
show log enents all — отображает все условия и события которые можно фильтровать.
Команды конфигурации категории Non-Persistent-Capable
В динамических профайлах можно выполнять следующие действия:
Применять ACL по событию:
Изменять политику LLDP на порту:
configure lldp ports <portlist> [advertise|don't-advertise]…
Включить/выключить PORT (jumbo-frame):
disable port [<port-list>|all]
enable port [<port_list> | all]
disable jumbo-frame ports [<port-list>|all]
enable jumbo-frame ports [<port-list>|all]
Манипуляции с PoE:
configure inline-power label <string> ports <port_list>
configure inline-power operator-limit <milliwatts> ports [all |<port_list>]
configure inline-power priority [critical | high | low] ports <port_list>
disable inline-power
enable inline-power
disable inline-power ports [all | <port_list>]
enable inline-power ports [all | <port_list>]
disable inline-power slot <slot>
enable inline-power slot <slot>
unconfigure inline-power priority ports [all | <port_list>]
Конфигурировать VLAN:
«Навесить» QoS/RateLimit по событию:
configure ports <port_list> < qosprofile><qosprofile>
Universal Port Variables
Общие переменные (доступны во всех скриптах)
Переменные пользовательских профайлов
Переменные профайлов устройств (device-profile)
Переменные профайлов EMS
Настройка Universal Port
show upm event <event-type> - посмотреть, какие события соответствуют каким профайлам.
show upm profile <name> - посмотреть содержимое профайла.
show upm timers - посмотреть список таймеров.
show upm history < profile <profile-name> | event <upm-event> | status [pass | fail] | timer <timer-name> | detail>— история запуска.
show upm history exec-id <number>
unconfigure upm event <upm-event> profile <profile-name> ports <port_list> — удаление триггера устройства или пользователя.
unconfigure upm timer <timerName> profile <profileName> - удаление триггера времени.
run upm profile <profile-name> < event <event-name>> < variables <variable-string>>— ручной запуск профайла для теста.
run upm profile afterhours
Примеры скриптов
Пример 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 — формируем профайл следующего содержания:
Понадобилось как-то на работе организовать бэкап конфигов с свитчей и прочего сетевого оборудования, так чтобы делался он автоматически и с отправкой архива с конфигами на почту.
Варианты с использованием Kiwi Tools я отмел, ибо неудобно мне, решил поковырять Linux))
Остановился на простом варианте запуска по расписанию скрипта, который будет подключаться к свитчам по ssh или telnet, далее по команде копировать текущий конфиг на tftp-сервер, а оттуда уже отправлять его на почту.
Несмотря на то что есть несколько Linux-серверов, я решил взять для работы NAS WD MyCloud, который у нас используется как файловая помойка. Вот такой:
Замечателен он тем что в этой маленькой коробочке стоит неплохой процессор, Marvell Armada 375 (2x1GHz) или Mindspeed Comcerto C2200 (2x650MHz), в зависимости от ревизии, и объем ОЗУ 512MB Ram или 256 MB Ram, в зависимости от ревизии.
К примеру у нас GEN2, который имеет более быстрый процессор и больше ОЗУ.
И там внутри Linux, пусть и урезанный, но Linux. И есть в сети руководства как накатить туда полноценный Linux, например Debian, а далее что душа пожелает.
Я в свое время почитал эту тему на 4PDA и поставил туда Debian, а потом и OpenMediaVault.
Но вы можете использовать любой другой компьютер/устройство на Linux.
Суть сводится к тому что нужно доставить пару пакетов:
expect и tcl - для обработки команд свитчей, и mpak для отправки вложения на почту.
Также необходимо поставить tftp-сервер, к примеру в OpenMediaVault это делается в пару кликов.
Итак, мы их поставили, далее пишем скрипт backup_cisco.sh, с таким содержанием:
Что делает скрипт:
1. Подключается к свитчу.
2. Авторизуется
expect "sername: "
send "admin\r"
expect "assword: "
send "P@$$W0Rd\r"
3. Переходит в привилегированный режим
4. Передает команду копирования текущего конфига на tftp сервер.
5. Отключается от свитча и переходит к следующему.
За обработку ответа от свитча в скрипте отвечает как раз тот самый expect
Все свитчи разные, поэтому команды передачи конфига тоже разные.
6. Пауза в 4 минуты чтобы убедиться что все конфиги слились.
7. Перемещает все файлы с расширением *.cfg в отдельный каталог.
mv /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/tftproot/*.cfg /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/
8. Переход в каталог с скопированными конфигами.
cd /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/
9. Архивация всех файлов с расширением *.cfg в архив с текущей датой в имени
tar -czf backup_cisco_`date +"%m-%d-%Y"`.tar.gz /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/*.cfg
10. Отправка файла вложением на почту админу на [email protected]
mpack -s "CISCO Backup WD" /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/backup_cisco_`date +"%m-%d-%Y"`.tar.gz [email protected]
11. Удаляет все конфиги, очищает папку:
rm -rf /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/*.cfg
Далее, в веб-интерфейсе OpenMediaVault настраиваем уведомления для работы с почтой, у нас почта идет через MS Office 365:
Далее добавляем скрипт в встроенный планировщик OpenMediaVault, к примеру у меня он срабатывает в 8.00 по пятницам:
И вот результат:
Следующий пост будет про мониторинг оборудования через Zabbix с оповещением в Telegram
Если речь пошла об оборудовании Cisco, то почему бы не использовать штатную команду archive?expect штука, конечно, хорошая, но зачем же городить велосипеды? sYB.Tyumen категорически прав, да и удобнее, имхо, делать бэки так сказать on commit, благо большой спектр активного сетевого оборудования это позволяет.
Гы. Не все свитчи так дружественны.
/srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2
Надо-бы пути покороче сделать.
Рисунок по ТЗ ч.30
Котик для @ha1n , сразу после попугов))
Изучала тематику Линукса…единственное, что я поняла, так это то, что ребята вы самостоятельные))) Посему вот вам картинка и место для вашей (рекламы) шутки ^_^
Почтопард. №23: "Система почтовых уведомлений"
Почтопард. №23.
Следите за своими почтовыми ящиками, господа
Очень часто обращаются ко мне с такой проблемой: "Взыскали долг через суд, а мне ничего не приходило, я не слухом ни духом. Что делать?"
Отвечаю: Если вы не получали уведомлений, судебного решения и иных документов из суда по уважительной причине (болезнь, командировка и т.п.), то это является основанием для восстановления срока на обжалование решения и дальнейшей его отмены. То же самое качается ситуации, когда суд сам не направил вам соответствующее извещение.
Соответственно если суд направил извещение и другие документы по месту регистрации гражданина, а он их не получил, то он по закону считается уведомленным надлежащим образом. Шансы восстановить срок на обжалование решения в таких случаях стремятся к нулю. Придется искать какие-то другие уважительные причины для восстановления срока.
Выход из ситуации:
1. Минимум раз в неделю приезжать и проверять почтовый ящик.
2. Просить кого-нибудь (родственников, соседей), чтобы те следили за вашим почтовым ящиком.
3. Установить приложение Почты России (не реклама) и тогда вам будут приходить уведомления о письмах на телефон, что удобнее всего ибо не всегда почта приносит бумажные уведомления во время. Иногда и вообще не приносит (но ведь они же в этом хрен признаются, верно).
ВАЖНО. Судебные письма лежат на почте всего 7 дней, после чего их отправляют обратно. Не успели или не захотели получить - вы также считаетесь для суда уведомленными надлежащим образом.
Судебные письма лучше не игнорить. Реагировать нужно чем быстрее, тем лучше. Не пришел в суд, не направил возражение, забил болт - получил по-полной. А потом бегай - доказывай, что ты не верблюд, восстанавливай срок, отменяй аресты счетов и т.п. И можно сколько угодно сетовать на несправедливость - это ничего не изменит. Получил письмо из суда - встал и пошел активно отбиваться.
Системный администратор Linux. Вопросы. Часть 4. Финал
Серия вопросов подходит к завершению и остался последний, самый объёмный вопрос:
- Диск. Крайне желательно понимать что за диски, как они подключены и собраны. Информацию по использованию можно посмотреть командами iostat или iotop. Первая работает в разрезе блочных устройств, вторая по приложениям. Метрики на которые надо обратить внимание - скорость чтения/записи, время ожидания, количество операций, утилизация устройства. Далее, в зависимости от типа дисков, есть разные варианты развития событий. У виртуальных машин при аномалиях нужно смотреть на диски гипервизора и их утилизацию. У физических серверов - на тип диска и транспорт подключения. Если это обычный диск - смотрим smart и прочие метрики диска командами smartctl, hddtemp, hddparm. Большое количество bad-блоков или перегрев диска могут отрицательно влиять на скорость. Если диски собраны в raid - смотрим на его состояние. Если это программный рейд - команды mdadm или zpool. Для аппаратных через утилиты производителя или через iLO. Для внешних диском надо смотреть из транспорт. Это FC или сеть. Для FC смотрим статистику портов на SAN свичах командами sfpshow, porterrshow и т.д. Для сети смотрим количество ошибок портах командами ifconfig, ip, cat /proc/net/dev. Для внешних дисков так же надо смотреть нагрузку на дисковом массиве или SDS. Так же это могут быть так называемые шумные соседи, которые при отсутствии QOS или его неправильной настройке могут оказывать взаимное влияние.
- Сеть. Для начала можно просто проверить пингом. Обычным и тяжелыми пакетами, размером 1кб. Далее смотрим ошибки на портах сервера или на коммутаторе (если есть доступ). Команды выше. Проверяем настройки командой ethtool. Смотрим скорость интерфейса и подключения. Смотрим внешний мониторинг на предмет утилизации сети. Пробуем проверить качество канала чем то простым, вроде ftp. Если сервер удалённый - смотрим маршруты, на предмет потерь и перестройки. Для этого можно использовать tracepath или mtr.
На этом всё. Для тех, кто дочитал до конца всю серию постов и кому это всё интересно - у меня есть небольшой бонус:
В конце января я решился на один интересный эксперимент. Я выложил на популярных сайтах по поиску работы своё резюме с завышенным ценником. Ну вернее я выложил в регионе резюме с московской зарплатой. Раз в неделю я понижал ожидаемый уровень зарплаты и смотрел количество отзывов, приглашений на собеседования, реальных собеседований, а так же приглашений на работу. Следующий пост будет накопительным, с января по текущую дату, а дальнейшие посты - еженедельные отчёты по успехам. Ну и в последнем посте я попытаюсь собрать всю информацию и сделать отчёт, на сколько востребованы Linux-администраторы в регионах, что предлагают и что ожидают в ответ.
В сторону ssh на свитчах и rsh, сильно зависит от модели ещё, у некоторых функционал шелла убог невыносимо, возможно что и невозможно.
Копай в сторону expect(1). Правда, нужно немного программировать .
Expect, SNMP, Zabbix
В теории длинки должны уметь снмп. Лучше забиксом собери по снмп все данные, меньше велосипедить и меньше шанс завесить все свичи разом.
А потом можно приручить любую хрень понимающую snmp.
Правда, нужно немного программировать .
Программировать ни на чём не умею, ну на bash чуть-чуть.
Наверное, ему будет проще разобраться с expect-lite.
В сторону ssh на свитчах и rsh, сильно зависит от модели ещё, у некоторых функционал шелла убог невыносимо, возможно что и невозможно.
А вот этого лучше не делать. Начнет играться с ссш, свичи в себя напрочь уйдут. Одно дело переваривать человеков, а другое неконтролируемый поток команд с роботов.
Но для начала мне хотя бы понять как передать в telnet: логин, пароль и команду, а потом завершить сеанс. sunny1983 ★★★★★ ( 29.04.16 21:48:47 )
Последнее исправление: sunny1983 29.04.16 21:50:24 (всего исправлений: 2)
+1 на вариант с SNMP
Получить список vlan-ов, их тип и состояние совсем просто.
А вот какой порт в каком vlan-е чуть сложнее, т.к. у длинка нет единого стандарта.
Списки oid-ов практически у всех отличаются, но мибы все есть.
Последнее исправление: ananas 30.04.16 08:27:32 (всего исправлений: 1)
SCADA-система на Erlang, которая посылает SNMP-запросы или пингует через ICMP. Правила работы с каждым устройством скачиваются из PostgreSQL - sql генерит sql, который генерит правила для свичта. Парк оборудования примерно из 5 тысяч управляемых свитчей, комбинация из примерно 20 прошивой и их ревизий. Если надо будет - съест и 50000 свитчей без особых проблем, запас прочности колоссальный.
Читайте также: