Користувальницькькі налаштування

Налаштування сайту


envy

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Попередня ревізія
envy [2020/01/10 16:36]
envy [2023/12/26 17:01] (поточний)
nightfly
Рядок 1: Рядок 1:
 +====== Заздрість ======
  
 +
 +Модуль "Заздрість" (Envy) призначений для збирання та зберігання конфігурацій ваших мережевих пристроїв. Пристрої можуть бути стратегічно будь-якими та опитуватись рівно так, наскільки вам вистачить фантазії. Для кожної моделі пристрою ви можете пиляти свої кастомні скрипти опиту ні в чому не обмежуючи себе.
 +
 +{{:is7sins.png?800|}}
 +
 +
 +===== Початкова конфігурація =====
 +
 +Ввімкнення модулю здійснюється відповідною опцією [[alteriniconf|alter.ini]]:
 +
 +<code ini>
 +ENVY_ENABLED=1
 +</code>
 +
 +Для доступу до модуля використовується наступний елемент "Панелі задач":
 +
 +{{: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]], наприклад, якось так:
 +
 +<code>
 +40 20 * * *     /bin/ubapi "envyarchive"
 +</code>
 +
 +Слід також зауважити, що конфіги будуть збережені в архіві при масовій обробці, тільки для пристроїв з флагом "Активний". Але ви завжди можете зберегти конфіг, примусово скориставшись контролом бекапу на конкретному пристрої.
 +
 +===== Приклади скриптів заздрості =====
 +
 +==== Juniper MX ====
 +
 +<code>
 +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"
 +</code>
 +
 +==== Zyxel-GS-3012F/GS-4012F ====
 +
 +<code>
 +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"
 +</code>
 +
 +==== Dlink DGS-1510-28/DXS-1210-12SC ====
 +<code>
 +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"
 +</code>
 +
 +==== Mikrotik RouterOS ====
 +
 +<code>
 +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"
 +</code>
 +
 +==== OLT BDCOM 36XX ====
 +
 +<code>
 +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"
 +</code>
 +
 +==== Dlink DGS-36XX ====
 +<code>
 +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"
 +</code>
 +
 +
 +
 +==== Dlink DGS-3000-28SC ====
 +<code>
 +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"
 +</code>
 +
 +
 +
 +==== Huawei S2300 ====
 +<code>
 +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"
 +</code>
 +
 +==== Cisco Catalyst 2960G-24TC-L ====
 +
 +<code>
 +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"
 +</code>
 +
 +==== Mikrotik CSS326 (SwOS) ====
 +
 +<code>
 +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
 +</code>
 +
 +
 +==== FreeBSD host configs ====
 +
 +<code>
 +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"
 +</code>