首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用SNMP检查端口(net-snmp)

使用SNMP检查端口(net-snmp)
EN

Stack Overflow用户
提问于 2010-08-15 05:34:12
回答 3查看 8.6K关注 0票数 3

有没有办法使用SNMP监控服务器端口(我正在使用net-snmp-python通过python进行检查)。到目前为止,我已经用"nc“命令检查了很简单,但是我想看看我是否可以用SNMP来做这件事。

感谢您的回答和耐心。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-17 01:34:02

如果您想使用SNMP查看正在侦听的确切端口,您应该能够使用以下OIDS并查看表

代码语言:javascript
运行
复制
  "1.3.6.1.2.1.6.13.1.1" tcpConnState 
  "1.3.6.1.2.1.7.5.1.1"  udpLocalAddress

遍历UDP会给你类似这样的结果:

代码语言:javascript
运行
复制
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类似:

代码语言:javascript
运行
复制
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进行检查。

代码语言:javascript
运行
复制
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,您将获得

代码语言:javascript
运行
复制
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绑定,你会得到如下所示。

代码语言:javascript
运行
复制
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")

我不能百分之百确定Varbind是否是必需的,因为我不会用python做任何snmp工作,我发现的一些例子有它,有些没有,但不管用哪种方法都可以试试。在上面的查询中,如果服务器没有在监听,如果它是打开的,监听结果应该是Integer(2),那么它将返回一个没有这样的OID。

票数 4
EN

Stack Overflow用户

发布于 2010-08-15 07:22:32

很难看出SNMP适合在哪里使用。

最好的监控方式是使用特定于协议的客户端(例如,运行一个简单的查询V.S.ftp,使用MySQL检索测试文件,等等)

如果这不起作用,您可以打开端口的TCP或UDP套接字,看看是否有人在监听。

票数 0
EN

Stack Overflow用户

发布于 2010-08-15 10:52:20

您可能会尝试对要检查的端口运行nmap,但这不一定会给出打开端口另一端的服务器进程处于活动状态的指示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3485203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档