Страница 1 из 1

SMG2016 и автоматизация создания учетных записей

Добавлено: 16 ноя 2016 06:47
HorusHalo
Добрый день!

Есть задача - организовать создание учетных записей абонентов в автоматическом режиме, с нуля до готовой учетки с группами, при чем скриптом.
Попытался решить проблему в лоб, используя TCL\Expect, но столкнулся с абсолютно неадекватным и не предсказуемым поведением SSH на SMG2016 - сессия поднимается через раз, ответы на команды иногда приходят, иногда нет, передача команд тоже работает не всегда правильно, получается разговор слепого с глухим.
В связи с этим вопрос - может быть, кто-то делал такое, или у железки есть вменяемый API?

Re: SMG2016 и автоматизация создания учетных записей

Добавлено: 16 ноя 2016 09:25
Женя
HorusHalo писал(а):Добрый день!

Есть задача - организовать создание учетных записей абонентов в автоматическом режиме, с нуля до готовой учетки с группами, при чем скриптом.
Попытался решить проблему в лоб, используя TCL\Expect, но столкнулся с абсолютно неадекватным и не предсказуемым поведением SSH на SMG2016 - сессия поднимается через раз, ответы на команды иногда приходят, иногда нет, передача команд тоже работает не всегда правильно, получается разговор слепого с глухим.
В связи с этим вопрос - может быть, кто-то делал такое, или у железки есть вменяемый API?



Подобных проблем с " с абсолютно неадекватным и не предсказуемым поведением SSH на SMG2016 " не было замечено, а если в ручную давать команды, то тоже есть такие проблемы?
Канал связи до SMG через интеренет? может потери пакетов есть?

Re: SMG2016 и автоматизация создания учетных записей

Добавлено: 16 ноя 2016 09:43
HorusHalo
Канал связи через интернет, потерь нет, при работе в ручном режиме через SSH всё хорошо, но любые варианты работы через Expect в половине случаев приводят сначала к ошибкам, потом к невозможности подключения. Я бы грешил на сам Expect, но с хостами на Linux/FreeBSD он работает замечательно. Чуть позже приложу пример взаимодействия.

Re: SMG2016 и автоматизация создания учетных записей

Добавлено: 16 ноя 2016 15:05
bravo
вопрос конечно занятный, в чём там разница в шелах, но я тут пообщался с коллегой, который раньше на TCL занимался автоматизацией расчётов большого комплекса сопромата. С шелом приходилось работать тоже. Сказал, что приблуда эта, Expect, довольно хреново реализована всё таки и приходилось много заниматься отладкой и поиском не стандартных решений. Так что всё таки не выбрасывайте её из круга лиц подозреваемых.

И похоже вам бы дампы обмена снять, что бы понять, кто тут косячит.

Re: SMG2016 и автоматизация создания учетных записей

Добавлено: 24 ноя 2016 19:02
agentgoblin
используя TCL\Expect, но столкнулся с абсолютно неадекватным и не предсказуемым поведением SSH на SMG2016

Просто вы не анализировали, почему так происходит. А причина проста - шелл SMG оче интерактивный и периодически при вводе команд выводит подсказки. Это ломает expect.

Т.е. вы хотите ввести (на примере групп вызова):

Код: Выделить всё

set number 9 123456


Но как только вы наберёте set number 9 и нажмёте пробел, SMG выкатит подсказку по следующему операнду команды и затем выкатит строку приветствия с уже набранными командами (set number 9). Если вы работаете руками, то вы ничего не заметите. Но expect от такого поведения ломается. И надо просто это учитывать в скриптах:

Код: Выделить всё

send -h "set number $i "
expect -re "SMG\[0-9]+M*-\\\[CONFIG\\\]-HUNT-GROUP\\\[\[0-9]\\\]>"
send "$number\r"
expect -re "SMG\[0-9]+M*-\\\[CONFIG\\\]-HUNT-GROUP\\\[\[0-9]\\\]>"

Т.е. я ввожу set number N (обратите внимание на пробел в конце), жду, когда SMG выкатит подсказку и новое приглашение с уже набранным текстом. После чего завершаю: "123456" и Return (Enter).

Также обратите внимание на ключ -h у команды send. SMG иногда плохо реагирует на быстрый ввод команд и надо эмулировать ввод человеком (что этот улюч и делает, читайте в доках по expect как он работает).

Всё просто как пряник, дерзайте. А вообще по SNMP бы абонентов заводить.

Re: SMG2016 и автоматизация создания учетных записей

Добавлено: 24 ноя 2016 21:14
bravo
Спасибо, что поделились!

Re: SMG2016 и автоматизация создания учетных записей

Добавлено: 21 фев 2017 11:31
agentgoblin
Кроме того, можно полностью избежать геморроя с реакцией на пробелы, если в expect сразу после логина вставить команду:

Код: Выделить всё

send -h "space hint no\r"


В этом случае дёрганий на ввод пробела не будет и можно писать длинные команды не опасаясь поломки скрипта на внезапном выводе от SMG.