Модуль “Заздрість” (Envy) призначений для збирання та зберігання конфігурацій ваших мережевих пристроїв. Пристрої можуть бути стратегічно будь-якими та опитуватись рівно так, наскільки вам вистачить фантазії. Для кожної моделі пристрою ви можете пиляти свої кастомні скрипти опиту ні в чому не обмежуючи себе.
Ввімкнення модулю здійснюється відповідною опцією alter.ini:
ENVY_ENABLED=1
Для доступу до модуля використовується наступний елемент “Панелі задач”:
Життєрадісна картина, яку ми бачимо, спочатку виглядає так:
Для початку слід налаштувати “скрипти заздрості” для моделей наявного у вас обладнання. Робиться це у відповідному довіднику.
Створені вами скрипи заздрості запускатимуться відносно моделі ваших заздрісних пристроїв. Запускатися вони будуть за допомогою програмного забезпечення вказаного в опції EXPECT_PATH конфігу billing.ini. Можливо це не очевидно, але очікується, що там буде шлях до встановленого expect.
У наших скриптах ми можемо використовувати такі макроси: {IP}, {LOGIN}, {PASSWORD}, {ENABLEPASSWORD}, {CUSTOM1}. Звідки будуть братися значення цих макросів має бути зрозумілим з наступної ілюстрації:
Значення макросу {IP} береться з довідника “Світчі”. Починаючи з Ubilling 1.4.3 також додано макрос {PORT}, що зоображає собою значення відповідного поля пристрою.
Далі за допомогою відповідного довідника ми можемо додати існуючі комутатори або будь-які інші пристрої з довідника “Світчі” як “заздрісні пристрої”:
Як не складно помітити, в переліку можливих для створення заздрості пристроїв, є лише ті світчі або інші пристрої, для моделі яких вже заповнені “скрипти заздрості” а також ті пристрої, для яких ще не створено заздрісний пристрій з їх ID.
Для того, щоб переконатися, що наш пристрій опитується нормально, ми можемо скористатися контролом “Попередній перегляд” і подивитися очима, що саме повертає скрипт заздрості для цього пристрою.
Крутотінь? Правда? Також ми можемо використовувати це для дебагу наших скриптів заздрості.
Також ми можемо примусово і “просто зараз” зберегти конфігурацію пристрою до архіву, за допомогою контролу “Забекапити конфігурацію пристрою в архів” або зберегти поточні конфіги всіх пристроїв скориставшись кнопкою “Зберегти все”:
Ну от і все, тепер у нас в архіві матеріалізуються відповідні записи для кожного заздрісного пристрою, які ми можемо переглядати, завантажувати або за необхідності видаляти.
При необхідності автоматичного та періодичного збереження конфігурації “Заздрісних пристроїв” в архіві ви можете використовувати виклик envyarchive з RemoteAPI, наприклад, якось так:
40 20 * * * /bin/ubapi "envyarchive"
Слід також зауважити, що конфіги будуть збережені в архіві при масовій обробці, тільки для пристроїв з флагом “Активний”. Але ви завжди можете зберегти конфіг, примусово скориставшись контролом бекапу на конкретному пристрої.
set timeout 60 set login {LOGIN} set password {PASSWORD} set ip {IP} spawn ssh $login@$ip expect { "(yes/no)?*" { send "yes\r" } } expect "Password:*" send "$password\r" expect "*%" send "cli\r" expect "*>" send "show configuration | no-more\r" expect "*>" send "exit\r" expect "*%" send "exit\r"
set timeout 30 set login {LOGIN} set password {PASSWORD} set ip {IP} spawn telnet $ip expect "User name:*" send "$login\r" expect "Password:*" send "$password\r" expect "*F#" send "show running-config\r" expect "*F#" send "exit\r"
set timeout 30 set login {LOGIN} set password {PASSWORD} set ip {IP} spawn telnet $ip expect "Username:*" send "$login\r" expect "Password:*" send "$password\r" expect "*Switch#" send "show running-config\r" expect "*Next Page*" send "a\r" expect "*Switch#" send "exit\r"
set timeout 60 set login {LOGIN} set password {PASSWORD} set ip {IP} spawn ssh -T -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $login@$ip expect "*assword*" send "$password\r" expect "*] >" send "export\r" sleep 1 expect "*] >" send "quit\r"
set timeout 30 set login {LOGIN} set password {PASSWORD} set ip {IP} spawn telnet $ip expect "Username:*" send "$login\r" expect "Password:*" send "$password\r" expect "*>" send "enable\r" expect "*#" send "terminal length 0\r" expect "*#" send "show running-config non-llid | exclude bind-onu\r" expect "*#" send "exit\r" expect "*>" send "exit\r"
set timeout 30 set login {LOGIN} set password {PASSWORD} set enablepassword {ENABLEPASSWORD} set ip {IP} spawn telnet $ip expect "Password:*" send "$password\r" expect "*>" send "enable\r" expect "Password:*" send "$enablepassword\r" expect "*#" send "terminal length 0\r" expect "*#" send "show running-config\r" expect "*#" send "exit\r"
set timeout 30 set login {LOGIN} set password {PASSWORD} set ip {IP} spawn telnet $ip expect "UserName:*" send "$login\r" expect "PassWord:*" send "$password\r" expect "*admin#" send "show config current_config\r" expect "*Next Page*" send "a\r" expect "*admin#" send "logout\r"
set timeout 30 set login {LOGIN} set password {PASSWORD} set ip {IP} spawn telnet $ip expect "Username:*" send "$login\r" expect "Password:*" send "$password\r" expect "*way>*" send "screen-length 0 temporary\r" expect "*way>*" send "system-view\r" expect "*way]*" send "display current-configuration\r" expect "*way]*" send "quit\r" expect "*way>*" send "quit\r"
set timeout 30 set login {LOGIN} set password {PASSWORD} set enablepassword {ENABLEPASSWORD} set ip {IP} spawn telnet $ip expect "Password:*" send "$password\r" expect "*>" send "enable\r" expect "Password:*" send "$enablepassword\r" expect "*#" send "terminal length 0\r" expect "*#" send "show running-config\r" expect "*#" send "exit\r"
set timeout 120 set login {LOGIN} set password {PASSWORD} set ip {IP} spawn /usr/local/bin/curl --silent --anyauth --digest --max-time 120 -u $login:$password "http://$ip/backup.swb" expect eof
set timeout 60 set login {LOGIN} set password {PASSWORD} set ip {IP} #custom ssh port here set port 22 spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $login@$ip -p $port expect "*assword*" send "$password\r" expect "*:~ %" send "cat /etc/rc.conf\r" expect "*:~ %" send "cat /etc/sysctl.conf\r" expect "*:~ %" send "exit\r"