【问题标题】:Make a PHP site send SNMP information to a network management app让 PHP 站点将 SNMP 信息发送到网络管理应用程序
【发布时间】:2009-09-08 15:40:47
【问题描述】:

我正在尝试让 PHP 网站通过 SNMP 发送信息。我一直在阅读有关 SNMP 的分配,但我仍然对从哪里开始有点无能为力。

我认为我需要创建一个 MIB,其中包含我的网站将用来发送信息的所有 OID。这个对吗?我如何以及在哪里可以定义这些变量 (OID)?有人能指出我正确的方向吗?

我在服务器上使用 FreeBSD。

提前致谢。

【问题讨论】:

  • 你是想让你的 PHP 进程监听 SNMP 对象获取请求,还是让它发出 SNMP 陷阱?
  • 实际上我正在尝试设置值并发送陷阱。例如,我想获取请求页面的执行时间并将其设置为 SNMP OID,然后发送陷阱。然后网络管理器应用程序会收到陷阱,并知道发出了一个页面请求,并且加载需要 n 秒。

标签: php snmp mib


【解决方案1】:

您要做的是发送“SNMP 陷阱”。您不一定需要定义 MIB。 MIB 只是将“半人类友好”名称转换为 OID,例如 SNMPv2-MIB::sysContact.0 转换为 .1.3.6.1.2.1.1.4.0 。对于私有应用程序,理论上您可以使用您想要的任何 OID,就像理论上您可以为未连接到其他人的私有网络使用您想要的任何 IP 地址一样。我不确定是否有首选的“私有”OID 分支。 http://www.paessler.com/support/kb/questions/49/ 有一些很好的信息可以帮助您入门。看起来 PHP 不直接支持发送 SNMP 陷阱,但您可以调用“snmptrap”命令。

【讨论】:

  • 您的回答给了我宝贵的信息,让我走上正确的道路。谢谢。
【解决方案2】:

有几个问题:

  • 要获得您自己的顶级标识符,我认为您实际上必须在某个地方请求它(并且可能要付钱?)但是有一个实验范围可用于测试。 (这不是 php 问题,而是 snmp 问题/功能)

  • 据我所知,该协议假定进程侦听与 http 端口完全不同的端口,并且不使用 TCP,而是使用 UDP。仅仅以通常的方式创建一个 php 页面是行不通的。

一个可能的解决方案可能是在 apache(或您正在使用的任何网络服务器)中使用 snmp 模块,它允许您在 php.ini 中编写响应逻辑。我的感觉是,你在网上遇到的大多数snmp php的东西都不是关于代理部分的,而是关于管理部分的。

【讨论】:

  • 是的,我已经在 Apache 上使用 snmp 模块。我只需要能够在每次请求页面时写入 OID 值。但为此,我相信我必须在 MIB 中创建“结构”。
【解决方案3】:

我所知道的是,SNMP 是一种协议,在该协议中,主机向设备发送对特定 OID 值的请求,然后接收响应。

我不确定你是否可以有一个 php 网站来回答这个数据包。

我发现的唯一信息是 PHP 有一个 SNMP 客户端类 PHP SNMP

维基百科为您提供有关 SNMP 的详细信息 link text

但我仍然确定网站不能充当 SNMP 服务器。

【讨论】:

  • PHP有socket函数,所以可以通过socket_create创建UDP socket来监听SNMP请求。
  • 我知道 PHP 具有套接字功能......但是问题中提出的“网站”无法创建等待循环来接收 UDP 数据包。如果问题是关于运行的 php 程序一个盒子..好的!
猜你喜欢
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 2012-10-23
  • 2012-08-31
  • 1970-01-01
相关资源
最近更新 更多