====== Заздрість ====== Модуль "Заздрість" (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"