Печать, сгенерированная сервером, печать на принтере, ближайшем к пользователю
Вопрос
У нас есть приложение SAAS, в котором отчеты и другие задания на печать генерируются на наших серверах приложений, а затем отправляются в очереди печати CUPS.Очередь печатает на принтерах на клиентских сайтах через IP-печать;пока все работает нормально.
Однако у нас есть новое требование к новому клиенту.Они хотят, чтобы задание на печать печаталось на принтере, ближайшем к используемой в данный момент рабочей станции.Это группа из 8 общих рабочих станций, на каждой рабочей станции рядом установлены два принтера:лазерный принтер и термопринтер этикеток.Принтеры подключены к сети и имеют свой собственный IP-адрес.Они поддерживают IP-печать.
Поскольку пользователь заходит, он просто выбирает открытую рабочую станцию.Мы не можем привязать принтеры к пользователям.Как мы можем идентифицировать рабочую станцию и сопоставить ее близлежащие принтеры?Достаточно просто, как только мы идентифицируем рабочую станцию, создать таблицу базы данных, в которой она хранится рядом с принтерами, к которым мы можем запросить, но как мы ИДЕНТИФИЦИРУЕМ рабочую станцию?
Печенье?Что произойдет, если они удалят всю историю браузера?Другие идеи?
Решение
Как насчет использования этой техники для получения IP-адреса клиента с помощью JavaScript и последующей отправки его обратно на сервер:
http://www.gnucitizen.org/projects/javascript-address-info/
Затем вы можете сопоставить IP с портом NAT и получить уникальное сопоставление.На самом деле он описывает проблему, очень похожую на вашу.
Другие советы
Возможно, я неправильно понимаю, но из того, что я прочитал, следует, что как только вы определите рабочую станцию, вы сможете построить статическую карту близлежащих принтеров?Если да, то почему бы не использовать IP рабочей станции в качестве идентификатора.Это должно быть прямолинейно, чтобы прочитать его из HTTP-запроса.
Что касается немного более экзотического решения.Если ваша сетевая настройка достаточно формальна в том смысле, что близлежащие принтеры, вероятно, будут использовать общий маршрутизатор / коммутатор, вы могли бы отследить маршрут от сервера SAAS к рабочей станции (1), а затем к каждому принтеру (2).Затем сопоставление (1) и (2) и поиск тех, у которых ближайший коммутатор к конечному IP, должны дать вам ближайший принтер.
Итак, допустим, рабочая станция A и принтер A находятся ближе всего, они подключены к коммутатору B, который через несколько переходов подключается к коммутатору C, и именно к нему также подключены ваши серверы.
(1) должно выглядеть примерно так:
Hop 1: Server IP
Hop .....
Hop 2: Switch M
Hop .....
Hop n-1: Switch A
Hop m: Workstation A
Один из маршрутизаторов из (2) должен совместно использовать последние два перехода
Hop n: Switch A
Hop m: Workstation A
Поэтому возьмите принтер, где m-n - наименьшее число.
Я бы, конечно, выбрал решение static IP to printer, потому что оно простое, но в случае, если это не вариант, то, возможно, последнее.Но это только в том случае, если настройка сети достаточно масштабна и формальна.
HTH Алекс