我需要检查一组服务器,路由器和交换机是否还活着.我一直在寻找可以与IP和端口一起工作超过一个小时的可靠的东西,有人可以帮忙吗?
结束使用
function ping($addr,$port='') { if(empty($port)) { ob_start(); system('ping -c1 -w1 '.$addr,$return); ob_end_clean(); if($return == 0) { return true; } else { return false; } } else { $fp = fsockopen("udp://{$addr}",$port,$errno,$errstr); if (!$fp) { return false; } else { return true; } } }
服务器,路由器和交换机……它们共享的一个共性是在SNMP服务运行时接受SNMP请求的能力.听起来你正在尝试做的是为监控系统(nagios等等)实施一个有趣的解决方法.
按照:http://php.net/manual/en/book.snmp.php
<?PHP $endpoints = array('10.0.0.1','10.0.0.2','10.0.0.3','10.0.0.4','10.0.0.5'); foreach ($endpoints as $endpoint) { $session = new SNMP(SNMP::VERSION_2c,$endpoint,'boguscommunity'); var_dump($session->getError()); // do something with the $session->getError() if it exists else,endpoint is up } ?>
这将告诉您端点是否处于活动状态且SNMP服务是否正在运行.特定于查看端口是否可用/打开,您可以使用fsockopen():
http://php.net/manual/en/function.fsockopen.php
<?PHP $fp = fsockopen("udp://127.0.0.1",13,$errstr); if (!$fp) { echo "ERROR: $errno - $errstr<br />\n"; } ?>