Ну, если вы хотите использовать SNMP, чтобы точно узнать, какие порты прослушивания, вы должны быть в состоянии использовать следующие OIDS и ходить по столу
"1.3.6.1.2.1.6.13.1.1" tcpConnState
"1.3.6.1.2.1.7.5.1.1" udpLocalAddress
Walking 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)
Walking таблицы покажет вам, какие порты литий и может предоставить вам некоторую информацию.
Теперь, если вы просто хотите проверить, не прослушиваются ли определенные порты, которые вы указали в своем вопросе, вы можете использовать следующие 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, используя питон net snmp bindings у вас будет что-то вроде этого.
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 материала в питоне, и некоторые примеры, которые я нашел были, и некоторые из них не сделали. Но попробуйте в любом случае. в вышеприведенном запросе, если сервер не прослушивает, он вернет нет такого OID, если он открыт, а результат прослушивания должен быть целым (2).
Что именно вы хотите контролировать? Какие порты прослушивают, и они принимают соединение? – Doon
Я хочу проверить стандартные порты, такие как FTP, SSH, HTTP (S), BIND, MySQL – abiko
Возможно, вы захотите попробовать этот вопрос на serverfault - там могут быть консервированные решения, которые будут лучше соответствовать вашим потребностям. – bstpierre