Я пытаюсь разработать способ получения списка принтеров (по крайней мере, имен и IP-адресов) с сервера печати Windows. Я планирую использовать эту информацию на внешнем веб-сайте состояния, управляемом PHP, работающем на веб-сервере Linux, который общается с принтерами индивидуально через SNMP. Связь SNMP уже функционирует. Мне просто нужен способ динамического создания списка принтеров, с которыми он общается, вместо жесткого кодирования всех IP-адресов / имен хостов DNS.
Идея в том, что я делаю это полностью, не касаясь и не меняя сервер (ы) печати, принтеры или соответствующий веб-сервер. Единственное, что находится под моим контролем — это общая, неадминистративная учетная запись CPanel.
Мои исследования привели меня к трем потенциальным возможностям. У меня нет опыта работы с кем-либо из них.
1) команда PHP printer_list, являющаяся частью расширения PECL. На данный момент на нашем веб-сервере не установлено это расширение, и я бы предпочел не делать этот запрос, если я не знаю, что он будет работать для моих целей.
2) Команда lpstat Linux, часть CUPS. Я пытался использовать его для справочной страницы, и кажется, что он просто сидит и ничего не делает. Я не знаю, происходит ли это потому, что он ожидает ответа CUPS, который, как я полагаю, он не получит от сервера Windows, или это может быть проблема с брандмауэром.
3) SMB или WMI-запросы. Я понятия не имею, с чего начать.
Я хотел бы попросить рекомендацию о том, с чего начать. Это был очень тревожный проект для исследования, потому что 90% результатов поиска касаются людей, желающих напечатать. Еще 8% — это люди, опрашивающие локальную систему для получения информации о принтере. Все остальное — черная магия и фирменные корпоративные решения.
Любое понимание очень ценится.
== Мэтт
Я эффективно использую WMI для получения информации о принтере по сети, используя:
Select * FROM Win32_Printer
Начать:
1 — бег wbemtest
из окна запуска.
2 — Подключитесь к любой машине, где вы знаете, принтеры настроены.
3 — есть опция запроса, копия Select * FROM Win32_Printer
4 — Шаг 4 вернет вам таблицу, нажмите на Show MOF
, он предоставит вам информацию о принтере. Виола, вы сделали.
5 — я использовал C#
ManagementObjectSearcher
& ManagementObjectCollection
и это довольно просто и легко в использовании.
Есть некоторые плюсы и минусы использования WMI. Прочитайте это онлайн.
Других решений пока нет …