Протокол SNMP в POSIX-операционных системах.

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Протокол SNMP в POSIX-операционных системах.

Непрочитанное сообщение Olej » 15 июн 2016, 11:50

Предыдущие сообщения показывают инсталляцию пакетов, полностью достаточных для использования SNMP.
Но этого недостаточно для разработки собственных агентов SNMP.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Протокол SNMP в POSIX-операционных системах.

Непрочитанное сообщение Olej » 15 июн 2016, 19:35

Olej писал(а):Предыдущие сообщения показывают инсталляцию пакетов, полностью достаточных для использования SNMP.
Проверка-тестирование того, что уже поставлено - на стандартных предустановленных OID-ах, пока...
Для Fedora 23 всё без проблем:

Код: Выделить всё

[olej@dell Видео]$ service snmpd status
Redirecting to /bin/systemctl status  snmpd.service
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
   Loaded: loaded (/usr/lib/systemd/system/snmpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

[olej@dell Видео]$ sudo service snmpd start
Redirecting to /bin/systemctl start  snmpd.service

[olej@dell Видео]$ service snmpd status
Redirecting to /bin/systemctl status  snmpd.service
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
   Loaded: loaded (/usr/lib/systemd/system/snmpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Ср 2016-06-15 12:31:08 EEST; 7s ago
 Main PID: 15860 (snmpd)
   CGroup: /system.slice/snmpd.service
           └─15860 /usr/sbin/snmpd -LS0-6d -f

июн 15 12:31:08 dell.localdomain systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
июн 15 12:31:08 dell.localdomain snmpd[15860]: NET-SNMP version 5.7.3
июн 15 12:31:08 dell.localdomain systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..

Код: Выделить всё

[olej@dell PureCodeCpp]$ snmpget -v1 localhost -c public SNMPv2-MIB::sysName.0
SNMPv2-MIB::sysName.0 = STRING: dell.localdomain

[olej@dell PureCodeCpp]$ snmpget 192.168.1.105 -v1 -c public system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux dell.localdomain 4.5.5-201.fc23.x86_64 #1 SMP Sat May 21 15:29:49 UTC 2016 x86_64

Код: Выделить всё

[olej@dell Видео]$ snmptranslate -Tp -OS  NET-SNMP-EXAMPLES-MIB::netSnmpExampleString
+-- -RW- String    netSnmpExampleString(3)
         Textual Convention: SnmpAdminString
         Size: 0..255

[olej@dell own.WORK]$ snmptranslate -On SNMPv2-MIB::sysOREntry
.1.3.6.1.2.1.1.9.1

[olej@dell own.WORK]$ snmptranslate -Td -On SNMPv2-MIB::sysOREntry
.1.3.6.1.2.1.1.9.1
sysOREntry OBJECT-TYPE
  -- FROM       SNMPv2-MIB
  MAX-ACCESS    not-accessible
  STATUS        current
  INDEX         { sysORIndex }
  DESCRIPTION   "An entry (conceptual row) in the sysORTable."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) sysORTable(9) 1 }

Код: Выделить всё

[olej@dell own.WORK]$ snmpget 127.0.0.1 -v1 -c public system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux dell.localdomain 4.5.5-201.fc23.x86_64 #1 SMP Sat May 21 15:29:49 UTC 2016 x86_64

[olej@dell own.WORK]$ snmpget 127.0.0.1 -v2c -c public system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux dell.localdomain 4.5.5-201.fc23.x86_64 #1 SMP Sat May 21 15:29:49 UTC 2016 x86_64

[olej@dell own.WORK]$ snmpget 127.0.0.1 -v3 -c public system.sysDescr.0
snmpget: No securityName specified (Sub-id not found: (top) -> system)
И для SNMPv3 здесь всё нормально, срабатывает - нужно только добавить аутентификацию.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Протокол SNMP в POSIX-операционных системах.

Непрочитанное сообщение Olej » 15 июн 2016, 19:42

Olej писал(а): Проверка-тестирование того, что уже поставлено - на стандартных предустановленных OID-ах, пока...
Для Fedora 23 всё без проблем:
А вот в Mint 17.1 (как понимаю - во всех DEB дистрибутивах) всё гораздо хуже...

Код: Выделить всё

olej@nvidia ~ $ service snmpd status
 * snmpd is not running

olej@nvidia ~ $ service snmpd start
 * Starting network management services:                                                                                             olej@n
 * snmpd is not running
Сервис не стартует, ошибка...
Но можно запустить в терминале, в отладочном режиме, с вывоом сообщений:

Код: Выделить всё

olej@nvidia ~ $ sudo snmpd -f -Le -d
payload OID: prNames
/etc/snmp/snmpd.conf: line 143: Error: unknown payload OID
Unknown payload OID: prNames
/etc/snmp/snmpd.conf: line 143: Error: Unknown payload OID
payload OID: prErrMessage
...
/etc/snmp/snmpd.conf: line 143: Error: unknown monitor OID
Turning on AgentX master support.
net-snmp: 33 error(s) in config file(s)

Sending 44 bytes to UDP: [127.0.0.1]:162->[0.0.0.0]:0
0000: 30 2A 02 01  00 04 06 70  75 62 6C 69  63 A4 1D 06    0*.....public...
0016: 0A 2B 06 01  04 01 BF 08  03 02 0A 40  04 C0 A8 01    .+.........@....
0032: 67 02 01 00  02 01 00 43  01 01 30 00                 g......C..0.

NET-SNMP version 5.7.2

Sending 1 bytes to callback: 2 on fd 6
0000: 00                                           
...
Agent snmpd стартовал, хоть и с ошибками - это нужно с .conf разбираться.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Протокол SNMP в POSIX-операционных системах.

Непрочитанное сообщение Olej » 15 июн 2016, 19:49

Olej писал(а): А вот в Mint 17.1 (как понимаю - во всех DEB дистрибутивах) всё гораздо хуже...
Но и это ещё не последняя проблема:

Код: Выделить всё

olej@nvidia ~ $ snmpget -v1 localhost -c public SNMPv2-MIB::sysName.0
MIB search path: /home/olej/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp
Cannot find module (SNMPv2-MIB): At line 1 in (none)
SNMPv2-MIB::sysName.0: Unknown Object Identifier
Он не знает OID-ов из стандартного набора!
Но это потому, что весь набор стандартных MIB-файлов не установлен, и должен устанавливаться отдельно:

Код: Выделить всё

olej@nvidia ~ $ apt show snmp-mibs-downloader
Пакет: snmp-mibs-downloader
Новый: да
Состояние: не установлен
Версия: 1.1
Приоритет: необязательный
Раздел: multiverse/net
Сопровождающий: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Архитектура: all
Размер в распакованном виде: 5.882 k
Зависимости: wget, smistrip, patch
Предлагает: unzip
Описание: Install and manage Management Information Base (MIB) files
 This package ships the IETF RFCs containing MIB files and a script which
 extracts them to be used by Simple Network Management libraries. The script can
 be used to update some MIBs to the latest version or to download extra vendor
 MIBs. 
 
 These MIBs can be useful for programs like wireshark or snmpget to enable them
 to translating the received information into human readable text.
Сайт: https://alioth.debian.org/projects/pkg-net-snmp

Код: Выделить всё

olej@nvidia ~ $ sudo apt-get install snmp-mibs-downloader
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  smistrip
НОВЫЕ пакеты, которые будут установлены:
  smistrip snmp-mibs-downloader
...
Downloading documents and extracting MIB files.
This will take some minutes.

In case this process fails, it can always be repeated later by executing
/usr/bin/download-mibs again.

RFC1155-SMI: 119 lines.
RFC1213-MIB: 2613 lines.
NOTE: SMUX: ignored.
SMUX-MIB: 158 lines.
CLNS-MIB: 1294 lines.
RFC1381-MIB: 1007 lines.
...
IANA-IPPM-METRICS-REGISTRY-MIB: 650 lines.
IANA-MAU-MIB: 895 lines.
IPFIX-SELECTOR-MIB: 167 lines.

Код: Выделить всё

olej@nvidia /usr/share $ tree /usr/share/mibs 
/usr/share/mibs
├── iana -> /var/lib/mibs/iana
└── ietf -> /var/lib/mibs/ietf

2 directories, 0 files

olej@nvidia /usr/share $ ls /usr/share/mibs/ietf
ACCOUNTING-CONTROL-MIB                   IF-CAP-STACK-MIB                    RFC1213-MIB
ADSL2-LINE-MIB                           IFCP-MGMT-MIB                       RFC1381-MIB
ADSL2-LINE-TC-MIB                        IF-INVERTED-STACK-MIB               RFC1382-MIB
ADSL-LINE-EXT-MIB                        IF-MIB                              RFC1414-MIB
ADSL-LINE-MIB                            IGMP-STD-MIB                        RIPv2-MIB
ADSL-TC-MIB                              INET-ADDRESS-MIB                    RMON2-MIB
AGENTX-MIB                               INTEGRATED-SERVICES-GUARANTEED-MIB  RMON-MIB
AGGREGATE-MIB                            INTEGRATED-SERVICES-MIB             ROHC-MIB
ALARM-MIB                                INTERFACETOPN-MIB                   ROHC-RTP-MIB
APM-MIB                                  IPATM-IPMC-MIB                      ROHC-UNCOMPRESSED-MIB
APPC-MIB                                 IPFIX-MIB                           RS-232-MIB
APPLETALK-MIB                            IP-FORWARD-MIB                      RSERPOOL-MIB
APPLICATION-MIB                          IPMCAST-MIB                         RSTP-MIB
APPN-DLUR-MIB                            IP-MIB                              RSVP-MIB
APPN-MIB                                 IPMROUTE-STD-MIB                    RTP-MIB
APPN-TRAP-MIB                            IPOA-MIB                            SCSI-MIB
APS-MIB                                  IPS-AUTH-MIB                        SCTP-MIB
ARC-MIB                                  IPSEC-SPD-MIB                       SFLOW-MIB
ATM2-MIB                                 IPV6-FLOW-LABEL-MIB                 SIP-COMMON-MIB
ATM-ACCOUNTING-INFORMATION-MIB           IPV6-ICMP-MIB                       SIP-MIB
ATM-MIB                                  IPV6-MIB                            SIP-SERVER-MIB
ATM-TC-MIB                               IPV6-MLD-MIB                        SIP-TC-MIB
BGP4-MIB                                 IPV6-TC                             SIP-UA-MIB
BRIDGE-MIB                               IPV6-TCP-MIB                        SLAPM-MIB
CAPWAP-BASE-MIB                          IPV6-UDP-MIB                        SMON-MIB
CAPWAP-DOT11-MIB                         ISCSI-MIB                           SMUX-MIB
CHARACTER-MIB                            ISDN-MIB                            SNA-NAU-MIB
CIRCUIT-IF-MIB                           ISIS-MIB                            SNA-SDLC-MIB
CLNS-MIB                                 ISNS-MIB                            SNMP-COMMUNITY-MIB
COPS-CLIENT-MIB                          ITU-ALARM-MIB                       SNMP-FRAMEWORK-MIB
DECNET-PHIV-MIB                          ITU-ALARM-TC-MIB                    SNMP-IEEE802-TM-MIB
DIAL-CONTROL-MIB                         Job-Monitoring-MIB                  SNMP-MPD-MIB
DIFFSERV-CONFIG-MIB                      L2TP-MIB                            SNMP-NOTIFICATION-MIB
DIFFSERV-DSCP-TC                         LANGTAG-TC-MIB                      SNMP-PROXY-MIB
DIFFSERV-MIB                             LMP-MIB                             SNMP-REPEATER-MIB
DIRECTORY-SERVER-MIB                     MALLOC-MIB                          SNMP-SSH-TM-MIB
DISMAN-EVENT-MIB                         MAU-MIB                             SNMP-TARGET-MIB
DISMAN-EXPRESSION-MIB                    MGMD-STD-MIB                        SNMP-TSM-MIB
DISMAN-NSLOOKUP-MIB                      MIDCOM-MIB                          SNMP-USER-BASED-SM-MIB
DISMAN-PING-MIB                          MIOX25-MIB                          SNMP-USM-AES-MIB
DISMAN-SCHEDULE-MIB                      MIP-MIB                             SNMP-USM-DH-OBJECTS-MIB
DISMAN-SCRIPT-MIB                        MOBILEIPV6-MIB                      SNMPv2-CONF
DISMAN-TRACEROUTE-MIB                    Modem-MIB                           SNMPv2-M2M-MIB
DLSW-MIB                                 MPLS-FTN-STD-MIB                    SNMPv2-MIB
DNS-RESOLVER-MIB                         MPLS-L3VPN-STD-MIB                  SNMPv2-PARTY-MIB
DNS-SERVER-MIB                           MPLS-LC-ATM-STD-MIB                 SNMPv2-PDU
DOCS-BPI-MIB                             MPLS-LC-FR-STD-MIB                  SNMPv2-SMI
DOCS-CABLE-DEVICE-MIB                    MPLS-LDP-ATM-STD-MIB                SNMPv2-TC
DOCS-IETF-BPI2-MIB                       MPLS-LDP-FRAME-RELAY-STD-MIB        SNMPv2-TM
DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB  MPLS-LDP-GENERIC-STD-MIB            SNMPv2-USEC-MIB
DOCS-IETF-QOS-MIB                        MPLS-LDP-STD-MIB                    SNMP-VIEW-BASED-ACM-MIB
DOCS-IETF-SUBMGT-MIB                     MPLS-LSR-STD-MIB                    SONET-MIB
DOCS-IF-MIB                              MPLS-TC-STD-MIB                     SOURCE-ROUTING-MIB
DOT12-IF-MIB                             MPLS-TE-STD-MIB                     SSPM-MIB
DOT12-RPTR-MIB                           MSDP-MIB                            SYSAPPL-MIB
DOT3-EPON-MIB                            MTA-MIB                             SYSLOG-MSG-MIB
DOT3-OAM-MIB                             NAT-MIB                             SYSLOG-TC-MIB
DPI20-MIB                                NEMO-MIB                            T11-FC-FABRIC-ADDR-MGR-MIB
DS0BUNDLE-MIB                            NETWORK-SERVICES-MIB                T11-FC-FABRIC-CONFIG-SERVER-MIB
DS0-MIB                                  NHRP-MIB                            T11-FC-FABRIC-LOCK-MIB
DS1-MIB                                  NOTIFICATION-LOG-MIB                T11-FC-FSPF-MIB
DS3-MIB                                  OPT-IF-MIB                          T11-FC-NAME-SERVER-MIB
DSA-MIB                                  OSPF-MIB                            T11-FC-ROUTE-MIB
DSMON-MIB                                OSPF-TRAP-MIB                       T11-FC-RSCN-MIB
DVB-RCS-MIB                              OSPFV3-MIB                          T11-FC-SP-AUTHENTICATION-MIB
EBN-MIB                                  PARALLEL-MIB                        T11-FC-SP-POLICY-MIB
EFM-CU-MIB                               P-BRIDGE-MIB                        T11-FC-SP-SA-MIB
ENTITY-MIB                               PerfHist-TC-MIB                     T11-FC-SP-TC-MIB
ENTITY-SENSOR-MIB                        PIM-BSR-MIB                         T11-FC-SP-ZONING-MIB
ENTITY-STATE-MIB                         PIM-MIB                             T11-FC-VIRTUAL-FABRIC-MIB
ENTITY-STATE-TC-MIB                      PIM-STD-MIB                         T11-FC-ZONE-SERVER-MIB
ETHER-CHIPSET-MIB                        PINT-MIB                            T11-TC-MIB
EtherLike-MIB                            PKTC-IETF-EVENT-MIB                 TCP-ESTATS-MIB
FCIP-MGMT-MIB                            PKTC-IETF-MTA-MIB                   TCPIPX-MIB
FC-MGMT-MIB                              PKTC-IETF-SIG-MIB                   TCP-MIB
FDDI-SMT73-MIB                           POLICY-BASED-MANAGEMENT-MIB         TE-LINK-STD-MIB
FIBRE-CHANNEL-FE-MIB                     POWER-ETHERNET-MIB                  TE-MIB
Finisher-MIB                             PPP-BRIDGE-NCP-MIB                  TIME-AGGREGATE-MIB
FLOW-METER-MIB                           PPP-IP-NCP-MIB                      TN3270E-MIB
FORCES-MIB                               PPP-LCP-MIB                         TN3270E-RT-MIB
FRAME-RELAY-DTE-MIB                      PPP-SEC-MIB                         TOKENRING-MIB
FR-ATM-PVC-SERVICE-IWF-MIB               Printer-MIB                         TOKEN-RING-RMON-MIB
FR-MFR-MIB                               PTOPO-MIB                           TOKENRING-STATION-SR-MIB
FRNETSERV-MIB                            PW-ATM-MIB                          TPM-MIB
FRSLD-MIB                                PW-ENET-STD-MIB                     TRANSPORT-ADDRESS-MIB
GMPLS-LABEL-STD-MIB                      PW-MPLS-STD-MIB                     TRIP-MIB
GMPLS-LSR-STD-MIB                        PW-STD-MIB                          TRIP-TC-MIB
GMPLS-TC-STD-MIB                         PW-TC-STD-MIB                       TUNNEL-MIB
GMPLS-TE-STD-MIB                         PW-TDM-MIB                          UDPLITE-MIB
GSMP-MIB                                 Q-BRIDGE-MIB                        UDP-MIB
HC-ALARM-MIB                             RADIUS-ACC-CLIENT-MIB               UPS-MIB
HCNUM-TC                                 RADIUS-ACC-SERVER-MIB               URI-TC-MIB
HC-PerfHist-TC-MIB                       RADIUS-AUTH-CLIENT-MIB              VDSL2-LINE-MIB
HC-RMON-MIB                              RADIUS-AUTH-SERVER-MIB              VDSL2-LINE-TC-MIB
HDSL2-SHDSL-LINE-MIB                     RADIUS-DYNAUTH-CLIENT-MIB           VDSL-LINE-EXT-MCM-MIB
HOST-RESOURCES-MIB                       RADIUS-DYNAUTH-SERVER-MIB           VDSL-LINE-EXT-SCM-MIB
HOST-RESOURCES-TYPES                     RAQMON-MIB                          VDSL-LINE-MIB
HPR-IP-MIB                               RAQMON-RDS-MIB                      VPN-TC-STD-MIB
HPR-MIB                                  RDBMS-MIB                           VRRP-MIB
IBM-6611-APPN-MIB                        RFC1155-SMI                         WWW-MIB
Вот теперь всё заработает:

Код: Выделить всё

olej@nvidia /usr/share $ snmptranslate -Tp -OS  NET-SNMP-EXAMPLES-MIB::netSnmpExampleString
+-- -RW- String    netSnmpExampleString(3)
         Textual Convention: SnmpAdminString
         Size: 0..255


olej@nvidia /usr/share $ snmptranslate -Tp -OS SNMPv2-MIB::sysOREntry
+--sysOREntry(1)
   |  Index: sysORIndex
   |
   +-- ---- INTEGER   sysORIndex(1)
   |        Range: 1..2147483647
   +-- -R-- ObjID     sysORID(2)
   +-- -R-- String    sysORDescr(3)
   |        Textual Convention: DisplayString
   |        Size: 0..255
   +-- -R-- TimeTicks sysORUpTime(4)
            Textual Convention: TimeStamp

olej@nvidia /usr/share $ snmptranslate -On SNMPv2-MIB::sysOREntry 
.1.3.6.1.2.1.1.9.1

olej@nvidia /usr/share $ snmptranslate -Td -On SNMPv2-MIB::sysOREntry
.1.3.6.1.2.1.1.9.1
sysOREntry OBJECT-TYPE
  -- FROM	SNMPv2-MIB
  MAX-ACCESS	not-accessible
  STATUS	current
  INDEX		{ sysORIndex }
  DESCRIPTION	"An entry (conceptual row) in the sysORTable."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) sysORTable(9) 1 }

Код: Выделить всё

olej@nvidia /usr/share $ snmpget -v1 localhost -c public SNMPv2-MIB::sysName.0
SNMPv2-MIB::sysName.0 = STRING: nvidia

olej@nvidia /usr/share $ snmpwalk -v1 localhost -c public system
system: Unknown Object Identifier (Sub-id not found: (top) -> system)
olej@nvidia /usr/share $ snmpwalk -v1 localhost -c public SNMPv2-MIB::system
SNMPv2-MIB::sysDescr.0 = STRING: Linux nvidia 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:30:01 UTC 2014 i686
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.8072.3.2.10
SNMPv2-MIB::sysUpTime.0 = Timeticks: (251301) 0:41:53.01
SNMPv2-MIB::sysContact.0 = STRING: Me <me@example.org>
SNMPv2-MIB::sysName.0 = STRING: nvidia
SNMPv2-MIB::sysLocation.0 = STRING: Sitting on the Dock of the Bay
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-SMI::snmpModules.11.3.1.1
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-SMI::snmpModules.15.2.1.1
SNMPv2-MIB::sysORID.3 = OID: SNMPv2-SMI::snmpModules.10.3.1.1
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMPv2-SMI::mib-2.49
SNMPv2-MIB::sysORID.6 = OID: SNMPv2-SMI::mib-2.4
SNMPv2-MIB::sysORID.7 = OID: SNMPv2-SMI::mib-2.50
SNMPv2-MIB::sysORID.8 = OID: SNMPv2-SMI::snmpModules.16.2.2.1
SNMPv2-MIB::sysORID.9 = OID: SNMPv2-SMI::snmpModules.13.3.1.3
SNMPv2-MIB::sysORID.10 = OID: SNMPv2-SMI::mib-2.92
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.9 = STRING: The MIB modules for managing SNMP Notification, plus filtering.
SNMPv2-MIB::sysORDescr.10 = STRING: The MIB module for logging SNMP Notifications.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (0) 0:00:00.00

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Протокол SNMP в POSIX-операционных системах.

Непрочитанное сообщение Olej » 20 июн 2016, 09:28

Olej писал(а): Сервис не стартует, ошибка...

Код: Выделить всё

olej@nvidia ~ $ service snmpd status
 * snmpd is not running

olej@nvidia ~ $ sudo service snmpd start
 * Starting network management services:

olej@nvidia ~ $ service snmpd status
 * snmpd is running

После установки кучи стандартных MIB-файлов и сервис стартует как сервис ... только происходит это достаточно долго (до минуты) - подождать нужно.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Протокол SNMP в POSIX-операционных системах.

Непрочитанное сообщение Olej » 20 июн 2016, 09:36

Olej писал(а):Предыдущие сообщения показывают инсталляцию пакетов, полностью достаточных для использования SNMP.
Но этого недостаточно для разработки собственных агентов SNMP.
Переходим к разработке.

Доустанавливаю то, чего не хватает для создания собственных субагентов AgentX + делаем простейшего субагента для простейшей задачи.

Простейшая задача (проще не бывает) выглядит так:
- написать собственный MIB-файл ...
- который определит новый числовой OID по чтению (snmpget ...)...
- который прочитает на своём хосте /proc/uptime и возвратит результат как текстовую строку
- и написать агента SNMP, который может запускаться как субагент (AgentX), или как автономный демон (сервис, вместо snmpd)

Код: Выделить всё

[olej@dell snmp.7]$ cat /proc/uptime 
318360.39 1129565.01
Вот такая простенькая у нас цель и последовательность действий...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Протокол SNMP в POSIX-операционных системах.

Непрочитанное сообщение Olej » 20 июн 2016, 09:45

Шаг 1:
Olej писал(а): - написать собственный MIB-файл ...
- который определит новый числовой OID по чтению (snmpget ...)...
1-й файл - определяющий корень (8765) собственного поддерева ... например по принадлежности имени собственной компании :

Код: Выделить всё

ALEX-MIB DEFINITIONS ::= BEGIN
-- Top-level infrastructure of the ALEX-SNMP projects enterprise MIB tree
-- Title: ALEX TOP LEVEL MIB
-- Version : 1.0
-- Revision History:
-- *************************************************************************
-- 15/06/2016 - v1.0 Create base functionality

IMPORTS
    MODULE-IDENTITY, enterprises FROM SNMPv2-SMI;

alex MODULE-IDENTITY
    LAST-UPDATED    "201606150000Z"
    ORGANIZATION    "no organization"
    CONTACT-INFO    "email: sektorct@gmail.com"
    DESCRIPTION     "Top-level MIB .1.3.6.1.4.1.8765"
    REVISION        "201606150000Z"
    DESCRIPTION     "First draft"
::= { enterprises 8765 }

END
2-й файл - определение вершин собственного поддерева:

Код: Выделить всё

ALEX-MANAGEMENT-MIB DEFINITIONS ::= BEGIN

IMPORTS
    OBJECT-TYPE, NOTIFICATION-TYPE,
    MODULE-IDENTITY, Integer32,
    Gauge32, IpAddress                 FROM SNMPv2-SMI
    DisplayString                      FROM SNMPv2-TC
    alex                               FROM ALEX-MIB
    ;

management MODULE-IDENTITY
    LAST-UPDATED    "201606150000Z"
    ORGANIZATION    "no organization"
    CONTACT-INFO    "email: sektorct@gmail.com"
    DESCRIPTION     "SubAgent level MIB .1.3.6.1.4.1.8765.13"
    REVISION        "201606150000Z"
    DESCRIPTION     "First draft"
::= { alex 13 }

-- uptime системы из /proc
procUptime OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS current
    DESCRIPTION "System Uptime"
::= { management 5 }
      
END
1. Имена самих файлов не имеют никакого значения
2. Можно вообще и всё поддерево описать в одном файле ... но так не делают из-за удобства структуризации
3. Конкретные числа в OID для своего поддерева берём "с потолка" - это уже наши права...
Вложения
Alexey1.MIB.txt
(671 байт) 209 скачиваний
Alexey2.MIB.txt
(1.39 КБ) 204 скачивания

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Протокол SNMP в POSIX-операционных системах.

Непрочитанное сообщение Olej » 20 июн 2016, 10:02

Olej писал(а):Шаг 1:
Шаг 2:

MIB-файлы нужно тщательно выверить, специальными утилитами, формально... руками-глазами это сделать нельзя, а если этого шага не сделать - дальше всё развалится с дикими сообщениями об ошибках.

Помещаем (копируем) свои MIB-файлы для отработки в каталог, который известен для поиска утилитам SNMP:

Код: Выделить всё

[olej@dell snmp.7]$ net-snmp-config --default-mibdirs
/home/olej/.snmp/mibs:/usr/share/snmp/mibs
Но обычно для начала вполне подходит: $HOME/.snmp/mibs

Проверки:

Код: Выделить всё

[olej@dell snmp.7]$ snmptranslate -Tp -OS ALEX-MIB::alex
+--alex(8765)
[olej@dell snmp.7]$ snmptranslate -On -m +ALEX-MANAGEMENT-MIB -IR procUptime
.1.3.6.1.4.1.8765.13.5
[olej@dell snmp.7]$ snmptranslate -Tp -OS -m +ALEX-MANAGEMENT-MIB -IR alex
+--alex(8765)
   +--management(13)
      +-- -R-- IpAddr    hostIpAddress(1)
      +-- -R-- String    hostName(2)
      |        Textual Convention: DisplayString
      |        Size: 0..255
      +-- -R-- String    procUptime(5)
               Textual Convention: DisplayString
               Size: 0..255

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Протокол SNMP в POSIX-операционных системах.

Непрочитанное сообщение Olej » 20 июн 2016, 10:12

Olej писал(а): Проверки:
Для жёсткой проверки синтаксиса MIB нам нужна утилита smilint.

Fedora 23 :

Код: Выделить всё

[olej@dell own.WORK]$ dnf list libsmi*
Последняя проверка окончания срока действия метаданных: 0:20:26 назад, Wed Jun 15 12:03:05 2016.
Доступные пакеты
libsmi.i686                                                          0.4.8-16.fc23                                                   fedora
libsmi.x86_64                                                        0.4.8-16.fc23                                                   fedora
libsmi-devel.i686                                                    0.4.8-16.fc23                                                   fedora
libsmi-devel.x86_64                                                  0.4.8-16.fc23                                                   fedora

[olej@dell own.WORK]$ sudo dnf install libsmi
...
Установлено:
  libsmi.x86_64 0.4.8-16.fc23
Выполнено!

[olej@dell own.WORK]$ which smilint
/usr/bin/smilint
Mint 17.1

Код: Выделить всё

olej@nvidia ~ $ apt-file search smilint
smitools: /usr/bin/smilint
smitools: /usr/share/man/man1/smilint.1.gz

olej@nvidia ~ $ sudo apt-get install smitools
Чтение списков пакетов… Готово
...
Настраивается пакет smitools (0.4.8+dfsg2-8ubuntu2) …
Processing triggers for libc-bin (2.19-0ubuntu6.9) ...

olej@nvidia ~ $ which smilint
/usr/bin/smilint

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Протокол SNMP в POSIX-операционных системах.

Непрочитанное сообщение Olej » 20 июн 2016, 10:19

Olej писал(а): Для жёсткой проверки синтаксиса MIB нам нужна утилита smilint.

Код: Выделить всё

olej@nvidia ~/.snmp/mibs $ smilint -l3  -s -p ./Alexey1.MIB ./Alexey2.MIB

olej@nvidia ~/.snmp/mibs $ smilint -l4  -s -p ./Alexey1.MIB ./Alexey2.MIB
./Alexey2.MIB:23: [4] warning: node `hostIpAddress' must be contained in at least one conformance group
./Alexey2.MIB:31: [4] warning: node `hostName' must be contained in at least one conformance group

olej@nvidia ~/.snmp/mibs $ smilint -l5  -s -p ./Alexey1.MIB ./Alexey2.MIB
./Alexey2.MIB:23: [4] warning: node `hostIpAddress' must be contained in at least one conformance group
./Alexey2.MIB:31: [4] warning: node `hostName' must be contained in at least one conformance group
./Alexey2.MIB:4: [5] warning: identifier `NOTIFICATION-TYPE' imported from module `SNMPv2-SMI' is never used
./Alexey2.MIB:5: [5] warning: identifier `Integer32' imported from module `SNMPv2-SMI' is never used
./Alexey2.MIB:6: [5] warning: identifier `Gauge32' imported from module `SNMPv2-SMI' is never used
Опция -l (эл) - это степень грубости (1 ... 5) сообщений/предупреждений, которые нужно включать в диагностику

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей