Что ж, если вы хотите использовать SNMP, чтобы точно узнать, какие порты прослушиваются, вы должны иметь возможность использовать следующие OIDS и обойти таблицу
"1.3.6.1.2.1.6.13.1.1" tcpConnState
"1.3.6.1.2.1.7.5.1.1" udpLocalAddress
Пройдя UDP, вы получите что-то вроде этого:
snmpwalk -cpublic 192.168.1.13 1.3.6.1.2.1.7.5.1.1
UDP-MIB::udpLocalAddress.0.0.0.0.68 = IpAddress: 0.0.0.0
UDP-MIB::udpLocalAddress.0.0.0.0.161 = IpAddress: 0.0.0.0
UDP-MIB::udpLocalAddress.0.0.0.0.32908 = IpAddress: 0.0.0.0
UDP-MIB::udpLocalAddress.0.0.0.0.33281 = IpAddress: 0.0.0.0
UDP-MIB::udpLocalAddress.0.0.0.0.33795 = IpAddress: 0.0.0.0
UDP-MIB::udpLocalAddress.0.0.0.0.34822 = IpAddress: 0.0.0.0
UDP-MIB::udpLocalAddress.0.0.0.0.44782 = IpAddress: 0.0.0.0
UDP-MIB::udpLocalAddress.192.168.1.13.9950 = IpAddress: 192.168.1.13
и TCP как:
snmpwalk -cpublic 192.168.1.13 1.3.6.1.2.1.6.13.1.1
TCP-MIB::tcpConnState.0.0.0.0.21.0.0.0.0.0 = INTEGER: listen(2)
TCP-MIB::tcpConnState.0.0.0.0.23.0.0.0.0.0 = INTEGER: listen(2)
TCP-MIB::tcpConnState.0.0.0.0.80.0.0.0.0.0 = INTEGER: listen(2)
Ходьба по столам покажет вам, какие порты прослушиваются, и может предоставить вам некоторую информацию.
Теперь, если вы просто хотите проверить, прослушивают ли конкретные порты, которые вы указали в своем вопросе, вы можете использовать следующие OIDS для проверки.
ftp -- 1.3.6.1.2.1.6.13.1.1.0.0.0.0.21.0.0.0.0.0
ssh -- 1.3.6.1.2.1.6.13.1.1.0.0.0.0.22.0.0.0.0.0
http -- 1.3.6.1.2.1.6.13.1.1.0.0.0.0.80.0.0.0.0.0
https -- 1.3.6.1.2.1.6.13.1.1.0.0.0.0.443.0.0.0.0.0
bind -- 1.3.6.1.2.1.7.5.1.1.0.0.0.0.53
вышеупомянутые OIDS предполагают, что сервер связан с адресом по умолчанию (0.0.0.0).Но они могут быть связаны только с IP-адресом сервера (зависит от конфигурации).В этом случае, предполагая, что ваш IP-адрес сервера 192.168.10.1, вы получите
1.3.6.1.2.1.7.5.1.1.192.168.10.1.53 for bind
, поэтому, учитывая все вышесказанное, я думаю, что если вы хотите узнать, прослушивает ли http адрес по умолчанию на хосте 192.168.10.1, используяПривязки Python Net Snmp у вас будет что-то вроде этого.
import netsnmp
oid = netsmp.Varbind('1.3.6.1.2.1.6.13.1.1.0.0.0.0.80.0.0.0.0.0')
result = netsnmp.snmp(oid,
Version = 2,
DestHost="192.168.10.1",
Community="public")
Я не уверен на 100%, требуется ли Varbind, так как я не делаю ничего snmp в Python, и некоторые примеры, которые я нашел, имелиэто, а некоторые нет.Но попробуйте это в любом случае.в приведенном выше запросе, если сервер не прослушивает, он не возвращает такой OID, если он открыт и результат прослушивания должен быть Integer (2).