Зміст

Заздрість

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

Слід також зауважити, що конфіги будуть збережені в архіві при масовій обробці, тільки для пристроїв з флагом “Активний”. Але ви завжди можете зберегти конфіг, примусово скориставшись контролом бекапу на конкретному пристрої.

Приклади скриптів заздрості

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"
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"
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"

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"