Во-первых, спасибо за то, что выложили результат своего труда в открытый доступ. Думаю, многим он облегчит работу.
Немного комментарии от меня. Завести скрипт на FreeBSD (которая у нас везде) мне не получилось. Сходу оно не заработало, начал разбираться почему, в итоге бросил, потому что были более важные задачи...
Но администраторам Linux вероятно подойдет. Для Фрюхи надо допиливать большущим напильником.
1. Пути к snmpwalk и snmpset у вас кажется указаны жестко на каталог /usr/bin ? На FreeBSD вспомогательное ПО ставится в /usr/local/bin. Не помню как я догадался сделать симлинки... Дело в том, что изначально в логах Апаче была только одна ошибка:
[Tue Oct 27 14:55:04.113670 2015] [:error] [pid 5140] PHP Parse error: syntax error, unexpected end of file in /usr/local/www/poncontrol/get_sfp.php(17) : eval()'d code on line 1, referer: http://poncontrol.local/
Поскольку я в PHP не очень силен, пришлось идти в Google за пониманием почему такая ошибка может возникать. В итоге догадался, что eval получает не тот набор (или формат) значений что ожидается. Включил дебаг и стало ясно: snmpwalk not found. Сделал симлинки для вышеупомянутых программ на /usr/bin - заработало. Вернее, не то чтобы заработало, скрипт нашел snmpwalk, но появились другие ошибки.
2. snmpwalk у вас используется в 11 скриптах:
dist_by_id.phpget_num_ports.php
get_port_link.php
get_port_state.php
get_ports.php
get_ports.php
get_snmp.php
iface_by_mac.php
mac_by_id.php
name_onu_by_if.php
vlan_by_port.php
Так вот в части из них параметры snmpwalk идут в такой последовательности:
snmpwalk -v2c -c $ro $ip 1.3.6.1.4.1.3320.101.12.1.1.3.XXXа в части из них вот в такой:
snmpwalk -v2c $ip -c $ro 1.3.6.1.4.1.3320.101.12.1.1.3.XXX
(здесь IP адрес стоит до указания комьюнити).
Вариант номер 2 на FreeBSD snmpwalk не понимает и вываливает выдержку из мана.
Я во всех скриптах исправил exec snmpwalk на тот формат, что должен быть на моей системе удачно распознан. Протестировал snmpwalk из консоли. OID'ы вываливает. Но "...syntax error, unexpected end of file eval'd..." в логи вебсервера при "Опросе ОЛТа" так и сыпется. Вероятно, не проходит парсинг вывода snmpwalk. Итого: ОЛТы видно, ОНУшки не показывает, потому что очевидно, не разбирает вывод snmpwalk.
На этом месте я прекратил свои поиски. Не очень люблю разбираться в чужом коде, особенно в PHP который мне мало понятен.