====== Заздрість ======
Модуль "Заздрість" (Envy) призначений для збирання та зберігання конфігурацій ваших мережевих пристроїв. Пристрої можуть бути стратегічно будь-якими та опитуватись рівно так, наскільки вам вистачить фантазії. Для кожної моделі пристрою ви можете пиляти свої кастомні скрипти опиту ні в чому не обмежуючи себе.
{{:is7sins.png?800|}}
===== Початкова конфігурація =====
Ввімкнення модулю здійснюється відповідною опцією [[alteriniconf|alter.ini]]:
ENVY_ENABLED=1
Для доступу до модуля використовується наступний елемент "Панелі задач":
{{:envyicon1.png?|}}
Життєрадісна картина, яку ми бачимо, спочатку виглядає так:
{{:envy0.png?500|}}
Для початку слід налаштувати "скрипти заздрості" для моделей наявного у вас обладнання. Робиться це у відповідному довіднику.
{{:envy1.png?500|}}
Створені вами скрипи заздрості запускатимуться відносно моделі ваших заздрісних пристроїв. Запускатися вони будуть за допомогою програмного забезпечення вказаного в опції **EXPECT_PATH** конфігу **billing.ini**. Можливо це не очевидно, але очікується, що там буде шлях до встановленого expect.
{{:envy2.png?500|}}
У наших скриптах ми можемо використовувати такі макроси: **{IP}, {LOGIN}, {PASSWORD}, {ENABLEPASSWORD}, {CUSTOM1}**. Звідки будуть братися значення цих макросів має бути зрозумілим з наступної ілюстрації:
{{:envy3_1.png?400|}}
Значення макросу **{IP}** береться з довідника "Світчі". Починаючи з Ubilling 1.4.3 також додано макрос **{PORT}**, що зоображає собою значення відповідного поля пристрою.
Далі за допомогою відповідного довідника ми можемо додати існуючі комутатори або будь-які інші пристрої з довідника "Світчі" як "заздрісні пристрої":
{{:envy3.png?500|}}
Як не складно помітити, в переліку можливих для створення заздрості пристроїв, є лише ті світчі або інші пристрої, для моделі яких вже заповнені "скрипти заздрості" а також ті пристрої, для яких ще не створено заздрісний пристрій з їх ID.
Для того, щоб переконатися, що наш пристрій опитується нормально, ми можемо скористатися контролом "Попередній перегляд" і подивитися очима, що саме повертає скрипт заздрості для цього пристрою.
{{:envy4.png?500|}}
Крутотінь? Правда? Також ми можемо використовувати це для дебагу наших скриптів заздрості.
Також ми можемо примусово і "просто зараз" зберегти конфігурацію пристрою до архіву, за допомогою контролу "Забекапити конфігурацію пристрою в архів" або зберегти поточні конфіги всіх пристроїв скориставшись кнопкою "Зберегти все":
{{:envy5.png?500|}}
Ну от і все, тепер у нас в архіві матеріалізуються відповідні записи для кожного заздрісного пристрою, які ми можемо переглядати, завантажувати або за необхідності видаляти.
{{:envy6.png?500|}}
При необхідності автоматичного та періодичного збереження конфігурації "Заздрісних пристроїв" в архіві ви можете використовувати виклик **envyarchive** з [[remoteapi|RemoteAPI]], наприклад, якось так:
40 20 * * * /bin/ubapi "envyarchive"
Слід також зауважити, що конфіги будуть збережені в архіві при масовій обробці, тільки для пристроїв з флагом "Активний". Але ви завжди можете зберегти конфіг, примусово скориставшись контролом бекапу на конкретному пристрої.
===== Приклади скриптів заздрості =====
==== Juniper MX ====
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"
==== Zyxel-GS-3012F/GS-4012F ====
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"
==== Dlink DGS-1510-28/DXS-1210-12SC ====
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"
==== Mikrotik RouterOS ====
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"
==== OLT BDCOM 36XX ====
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"
==== Dlink DGS-36XX ====
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"
==== Dlink DGS-3000-28SC ====
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"
==== Huawei S2300 ====
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"
==== Cisco Catalyst 2960G-24TC-L ====
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"
==== Mikrotik CSS326 (SwOS) ====
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
==== FreeBSD host configs ====
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"