Php 多个snmp开放端口

Php 多个snmp开放端口,php,printing,snmp,printers,network-printers,Php,Printing,Snmp,Printers,Network Printers,我有一个SNMP问题。我使用以下代码通过PHP连接到SNMP: <?php $session = new SNMP(SNMP::VERSION_1, "xxx.xxx.xxx.xxx", "public"); $fulltree = $session->walk("."); print_r($fulltree); echo "<br>"; $session->close(); ?> 代码工作得很好,这不是问题所在。问题是我是否可以拥有更多需要与SN

我有一个SNMP问题。我使用以下代码通过PHP连接到SNMP:

<?php
 $session = new SNMP(SNMP::VERSION_1, "xxx.xxx.xxx.xxx", "public");
 $fulltree = $session->walk(".");
 print_r($fulltree);
 echo "<br>";
 $session->close();
?>
代码工作得很好,这不是问题所在。问题是我是否可以拥有更多需要与SNMP连接的IP。我有一个防火墙,可以有4台打印机。出现此问题是因为我只能在一台打印机上设置161端口,而根本无法设置

如何为所有打印机添加端口161?现在,使用SNMP,我只能看到一台打印机,但我需要看到所有打印机。

如果不是默认的161,则选项1是

$sessionA = new SNMP(SNMP::VERSION_1, "192.168.1.204", "public"); //for port 161
$sessionB = new SNMP(SNMP::VERSION_1, "192.168.1.204:162", "public"); //for port 162
选项2(取决于您的网络设置)是为每台打印机分配不同的IP,以便您可以轮询每台打印机的端口161

您需要正确设置防火墙规则,并根据规则访问打印机

因此,如果您有4台打印机都直接位于防火墙后面,每台打印机都有自己的IP地址,那么您可以在防火墙上映射不同的传入端口,以指向每台打印机的161端口

然后,您将像这样打开SNMP会话

$sessionA = new SNMP(SNMP::VERSION_1, "public.firewall.ip.address:port1", "public"); 
对于打印机A,其中port1是防火墙上指向打印机上161的传入端口


冲洗并重复使用尽可能多的打印机。

在此模式下不起作用。例如,如果我将端口5691替换为192.168.1.204处的161,它就会工作。之后,如果我调用新的SNMP防火墙,我看到打印机的SNMP可以在本地正确地拥有192.168.1.204。打印机的IP是什么?他们落后于192.168.1.204吗?还有运行php脚本的IP地址?例如,如果我写IP.xxxxxx.com:5960,我会看到打印机。在php中,我调用ip.xxxxxx.com主机的ip。在我的防火墙中,ip 192.168.1.204上的端口5960重定向到80,我可以看到打印机。如果将ip 192.168.1.204的端口5961替换为161,则可以通过SNMP正确连接。这个问题的出现是因为我有更多的ip,可以使用端口161。我刚刚编辑了我的答案,但这将有助于了解网络拓扑以及调用脚本的位置。如果192.168.1.204和1.202打印机以及5550和5560在内部映射到端口80。然后只需在内部将不同的端口(如6561和6562)分别映射到端口161即可。这样继续不起作用。只有在原始端口和映射端口中设置161时,我才能看到打印机。例如,如果我在原始端口和映射端口161中设置了6678,则不起作用。为什么?我要发疯了。谢谢你的帮助