рфейсів комутатора
open (OLDSTATE, state.old );
$ previous= lt; OLDSTATE gt ;;
close (OLDSTATE);
# Цикл за кількістю інтерфейсів
for ($ i=1; $ i lt;=($ ResultAmount- gt; {$ AmountPort}); $ i ++)
# Отримання даних про інтерфейси
{$ DescrPort= .1.3.6.1.2.1.2.2.1.2. $ i raquo ;; # Опис інтерфейсу
$ SpeedPort= .1.3.6.1.2.1.2.2.1.5. $ i raquo ;; # Швидкість інтерфейсу
$ OperPort= .1.3.6.1.2.1.2.2.1.8. $ i raquo ;; # Оперативне стан інтерфейсу
$ AdminPort= .1.3.6.1.2.1.2.2.1.7. $ i raquo ;; # Адміністративне стан інтерфейсу
$ InOctets= .1.3.6.1.2.1.2.2.1.10. $ i raquo ;; # Кількість вхідних байт (через інтерфейс)
$ OutOctets= .1.3.6.1.2.1.2.2.1.16. $ i raquo ;; # Кількість вихідних байт
$ ifInErrors= .1.3.6.1.2.1.2.2.1.14. $ i raquo ;; # Кількість вхідних байт з помилками
$ ifOutErrors= .1.3.6.1.2.1.2.2.1.20. $ i raquo ;; # Кількість вихідних байт з помилками
$ ResultDescr=$ session- gt; get_request ($ DescrPort);
$ ResultSpeed ??= $ session- gt; get_request ($ SpeedPort);
$ ResultOper=$ session- gt; get_request ($ OperPort);
$ ResultAdmin=$ session- gt; get_request ($ AdminPort);
$ ResultInOctets=$ session- gt; get_request ($ InOctets);
$ ResultOutOctets=$ session- gt; get_request ($ OutOctets);
$ ResultInErrors=$ session- gt; get_request ($ ifInErrors);
$ ResultOutErrors=$ session- gt; get_request ($ ifOutErrors);
# Порівняння попереднього оперативного стану інтерфейсу з надійшли
# Якщо стан змінилося - оговтується повідомлення адміністратору
$ state_c=$ ResultOper- gt; {$ OperPort};
$ state_o=substr ($ previous, $ i, 1);
$ current.=$ state_c; ($ state_c ne $ state_o)
{open (SENDMAIL, |/usr/sbin/sendmail -oi -t -odq ); (SENDMAIL To: 79022270899@sms.dti Subject: SNMP Alert! Interface $ ResultDescr of Sw_01 changed status. EOF ); (SENDMAIL);}
# Запис в базу даних інформації про інтерфейси
$ dbh- gt; do ( INSERT INTO if $ table_name (sDateTime, sDescr, sSpeedPort, sInOct, sOutOct, sOperPort, sAdminPort, sInErrors, sOutErrors) VALUES ( $ datetime raquo ;, laquo ; $ ResultDescr- gt; {$ DescrPort} raquo ;, $ ResultSpeed- gt; {$ SpeedPort} raquo ;, $ ResultInOctets- gt; {$ InOctets} raquo ;, $ ResultOutOctets- gt; {$ OutOctets} raquo ;, $ ResultOper- gt; {$ OperPort} raquo ;, $ ResultAdmin- gt; {$ AdminPort} raquo ;, $ ResultInErrors- gt; {$ ifInErrors} raquo ;, $ ResultOutErrors- gt; {$ ifOutErrors} ) );
$ dbh2- gt; do ( INSERT INTO if $ table_name (sDateTime, sDescr, sSpeedPort, sInOct, sOutOct, sOperPort, sAdminPort, sInErrors, sOutErrors) VALUES ( $ datetime raquo ;, laquo ; $ ResultDescr- gt; {$ DescrPort} raquo ;, $ ResultSpeed- gt; {$ SpeedPort} raquo ;, $ ResultInOctets- gt; {$ InOctets} raquo ;, $ ResultOutOctets- gt; {$ OutOctets} raquo ;, $ ResultOper- gt; {$ OperPort} raquo ;, $ ResultAdmin- gt; {$ AdminPort} raquo ;, $ ResultInErrors- gt; {$ ifInErrors} raquo ;, $ ResultOutErrors- gt; {$ ifOutErrors} ) );
};
# Запис інформації у файл про останні отриманих станах інтерфейсів
open (OLDSTATE, gt; state.old ); (OLDSTATE $ current n ); (OLDSTATE);
$ session- gt; close;
$ dbh- gt; disconnect ();
Додаток Б
# Текст програми збору тарифікаційної інформації з УАТС Hicom
#!/usr/bin/perl -w
# Підключення модуля для роботи з СУБДDBI;
# Вибір модуля для роботи з com-портом в залежності від операційної системи
BEGIN {
$ OS_win=($ ^ O eq MSWin32 )? 1: 0; ($ OS_win) { use Win32 :: SerialPort raquo ;;} { use Device :: SerialPort raquo ;;}} ($ OS_win) {
$ port= COM0 raquo ;;
$ ob=Win32 :: SerialPort- gt; new ($ port);} {
$ port=/dev/ttys0 raquo ;;
$ ob=Device :: SerialPort- gt; new ($ port);} Can not open serial port $ port: $ ^ E n unless ($ ob);
# Встановлення параметрів роботи з ...