Comments 85
Вот это настоящая автоматизация, даже читать приятно. Увидел проблему, решил проблему, сэкономил кучу времени, да ещё и плюсиков на хабре отхватил :)
Увидел шуруп, взял микроскоп, забил шуруп. Проблема решена.
Active Directory? GPO? Зачем, если есть vbs.
И, кстати, очень удобно название компьютера по имени\фамилии (вариации) сотрудника, тогда не надо никому передавать трубку, а достаточно спросить «как зовут человека с нужным принтером».
А IP у пользователя вообще мне кажется нет никакого принтера спрашивать, смысл его грузить такими сложностями, на которые он точно не даст ответа, ну либо клеить наклейку на каждый принтер с именем, IP и назначать статику.
Вообще из AD можно получить имя компа, на котором залогинен юзер.
Вопрос к автору.
1. А где-то хранятся соответствия уникальных (заводских) id принтеров и номеров на бумажках? Что будет если бумажку оторвут, а номер никто не помнит?
2. Я правильно понял, что для каждого принтера хранится свой файл? Надо избавляться от дублирования, наверняка пхп на лету может генерировать файлы (не знаю).
Я сделал так: Имена компов в виде «объект-кабинет-номер». И небольшая программка, которая по имени находит в логах AD с какого компа этот юзер залогинен и запускает VNC с нужными параметрами.
А так как используется IP телефония, можно шагнуть чуть дальше — При звонке сразу пинговать юзера и критические объекты сети рядом с ним. Ну и выдавать всю инфу по юзеру, его прошлым обращениям и ссылку VNC для подключения к его компу.
Имена компов в виде «объект-кабинет-номер»
Все красиво до тех пор, пока не начинается переезд из кабинета в кабинет — отдел расширяется, небольшой ремонт и т.п.
Тогда начинаешь всему железу давать относительно рандомные имена, а уже у себя хранить базу соответствий. Можно еще по FDB-таблице свичей смотреть, порты/розетки более постоянная вещь в плане местоположения. И уже можно сказать после переездов, какой принтер стоит в кабинете, где сейчас юзер, или в соседнем
При регистрации в AD указывать комнату и автоматом привязывать принтер.
Все круто, но если таких звонков много, то напрашивается вопрос, почему инженер тех. поддержки, который наверняка «сажает» нового пользователя, сразу заодно и не устанавливает нужные принтеры?
Подготовку рабочего место делают сами юзеры, а уже настройку ОС, ПО и т.д — мы
И, кстати, очень удобно название компьютера по имени\фамилии (вариации) сотрудника, тогда не надо никому передавать трубку, а достаточно спросить «как зовут человека с нужным принтером».
А что если сотрудник поменяет компьютер или уволится? Имя компьютера то остается. Даже если не обращать на это внимание, то все равно политика организации запрещает давать компьютерам имена пользователей
А IP у пользователя вообще мне кажется нет никакого принтера спрашивать, смысл его грузить такими сложностями, на которые он точно не даст ответа, ну либо клеить наклейку на каждый принтер с именем, IP и назначать статику.
Именно поэтому на все принтеры наклеили их порядковые номера
Честно говоря, работал и в организациях где были имена компов Х000 и первая_буква_имени.фамилия. Бывали случаи и когда пользователь в упор не находил на рабочем столе bginfo с именем компа, но зато всегда все помнят как их зовут :). Наклеечки на корпус не рассматриваю, т.к. они часто отклеиваются\сдираются.
Порядковый номер для принтера кстати, хорошая идея.
А чем вам не угодила штатная функция регистрации принтера в AD и установка из стандартного интерфейса винды?
Представляю. Честно говоря, не вижу разницы в сложности между Пуск — Устройства и принтеры — Установить принтер и заходом на некий сайт, логином, и т.п. Впрочем, хозяин — барин.
Это абсолютно штатная пользовательская функция, которая в случае подключения принтера из AD не требует ни повышенных прав, ни специальных знаний. В некой конкретной организации может существовать регламент, делающий это "задачей администратора", но в общем случае администратор тут совершенно не нужен — максимум сотрудник техподдержки, консультирующий пользователя.
1.Создаешь в AD группы пользователей и соотносишь их с принтерами (например группа_принтера_бухгалтерия
2.GPO User Configuration-control panel settings-Printers
там создаешь все принтеры организации, на вкладке принтера Common выбираешь item-level targeting-New Item-Security Group и выбираешь из AD группу соответствующую этому принтеру
эту политику применяешь на всех печатающих пользователей и в зависимости от item-level targeting им будет прилетать нужный принтер. Соответственно, что бы пользователю дать принтер, достаточно добавить его в группу этого принтера.
Есть нюанс, для установки нового драйвера принтера нужны админские права, это то же как-то обходится через GPO, мне не нужно было так как разворачивал на терминалах.
Мог что-то упустить, давно это было.
воткнул принтер в комп, поставились дрова и он уже доступен для печати по сети всем из OU
Есть нюанс, для установки нового драйвера принтера нужны админские праваКонфигурация компьютера\Политики\Конфигурация Windows\Параметры безопасности\Локальные политики\Параметры безопасности — Устройства: Запретить пользователям установку драйверов принтера
А если бухгалтеров много, и сидят они на разных этажах/помещениях, им нужны разные принтеры?
Группа привязывается к принтеру (или пулу принтеров). Кому надо туда печатать — того и включаем. Кому не надо — не включаем. Заодно не будет проблемы, с которой автор, вероятно, пока не сталкивался — когда некто случайно подключает себе принтер из другой локации, и документы улетают не пойми куда.
чтобы его подключить теперь надо редактировать группу AD
Включить пользователей в группу — это разве проблема?
и скрипты GPO
Хорошо продуманный скрипт редактировать не нужно.
ЗЫ
статья заслуживает уважения — в свое время подобное делал для автоматизации установки софта с корпоративного портала (сразу оговорюсь, что создавал такие костыли, потому как не было домена))))))
Пользователь сам подключает себе принтер по нужному номеру. Если принтер сломался\нужен другой — просто заходит в папку (не нужные папки спрятаны DFS) и ставит. Это освоила даже бухгалтерия.
Почему так
1. Большая текучка как людей, так и принтеров
2. Простота администрирования — батники проще всего
3. Простота реализации
Там есть всё это и немного удобнее. Ничего не надо программировать, ничего пользователю не надо нажимать… Автоматическая установка принтера по членству пользователя в группе AD (можно по другим атрибутам, типа ip адреса и прочего, в том числе экзотическим, например — частота процессора).
В плюсах, кроме вышеперечисленного получаем автоматическое обновление драйверов, удаление принтеров и понимание — сколько людей в данный момент подключено к принтеру.
При условии, что в организации развёрнут принт сервер, и все принтеры — сетевые, получаем отчёты о том. кто что и где печатал в любом разрезе.
Интересно вот что: если у пользователя разные разряды ос или сама ос не типична?
Пример:
пользователь-1 win7x32
пользователь-2 win10x64
пользователь-3 macOS
пользователь-4 linux
Так же не понял, что видит пользователь, если при установке возникает ошибка? По идее вы внимание пользователя переключаете на окно IE (что конечно очень забавно) но там нет сообщений об ошибках.
Наверно, возможно сделать обратную связь сервера установки и скрипта vbs, ну там например вместо открытия окна IE, отправлять запрос на ваш сайт. А на сайте будет прогрессбар, который хоть аяксом раз в 500мс или 1с опрашивает прогресс.
Наверно в vbs есть возможность чекать юзерскую ОС (ее разрядность). Но ОС не Win думаю vbs не запуститься… Не знаю просто.
От всего этого геморроя очень спасает нормальная система управления печатью. На каждом компьютере висит один виртуальный принтер куда-то отправляются все задания, а при подходе ногами к любому принтеру пользователь авторизуется по пину/бейджу/логину и печатает работу.
http://www.papercut.com/products/free-software/
Бесплатная, ставится на принт-сервер в 3 клика, не требует никакой настройки.
Хотя, никто не мешает сделать самому что-то похожее — достаточно распарсить логи. По крайней мере у себя я так сделал: powershell скрипт, который отрабатывает по триггеру на событие печати в eventlog и записывает данные в MS SQL базу.
А оттуда отчёты в любой проекции строятся бесплатным MS SSRS.
Либо понять, как определить «ближайший принтер». Вариантов масса: адресация, именование компов и принтеров.
Либо, если компьютеры и принтеры достаточно стационарны, то назначать принтер не на пользователя, а на компьютер — учётная запись компьютера такой же объект в АД как и уз пользователя.
У меня сделано проще — маленький netlogon скриптик и структура в АДэ по местоположению, вида
OU=Офис/Здание/Этаж/Кабинет
Там внутри принтер и компьютеры. Имена и учётки не имеют никакого значения.
Пользователю ничего делать не надо.
Проблема в том, что майкрософтофилы смеются и «показывают пальцем» — так неправильно, майкрософт так не рекомендует. А как правильно и незатратно, никто не говорит.
Тут в принципе, даже нетлогон скрипт не нужен — всё можно сделать через предпочтения в групповых политиках — по принадлежности уз компьютера к определённому ОУ.
А как решён вопрос Policy/No policy? Или при переносе компьютера в ОУ, на которое не распространяются политики принтеры не удаляются?
Драйвер принтера ставится на компьютер
Принтер тоже проще тогда ставить для компьютера
Компьютеры в одном месте печатают на одних и тех же принтерах
При правильных политиках, как только компьютер попал в домен, его засунули в нужную группу и пользователь даже не в курсе, что принтеры надо устанавливать
PS а почему apache, а не IIS?
2к17 != 2017.
2к17 = 2170.
-vbs не работает нигде кроме IE, а значит надо объяснить пользователю, чтобы он открывал сайт именно через него.
-vbs, запускаемым в IE, нужно дополнительно разрешать доступ к файловой системе, и в таком случае нужно как-то централизованно добавлять сайт в Trusted Sites и изменять параметры безопасности для этой зоны.
Но в целом это рабочий способ.
Есть еще ленивый вариант вручную генерировать html-страницу, на которой будут ссылки на все принтеры в организации в виде \\printserver\printname. Страницу можно класть на какую-нибудь шару даже без веб сервера.Такое решение не позволяет устанавливать принтер по умолчанию и также без дополнительных манипуляций не работает в альтернативных браузерах.
-vbs не работает нигде кроме IE, а значит надо объяснить пользователю, чтобы он открывал сайт именно через него.
а какая разница где юзер откроет страницу? все равно скачивается bat файл, который запустит vbs скрипт. а работает скрипт через приложение csript.exe (находится в system32)
в папке %systemroot%\adminprintingscripts есть хорошие скрипты по добавлению порта принтера, установке и настройке принтера, в совокупности с psexec можно творить чудеса) плюс ип принтеров забиндить на днсп сервере и сделать для себя табличку, например, где какой принтер стоит.
Ну и средствами GPO, помнится, можно принтеры на пк вешать а не на учетку пользователя, а так как пк я так понял в задаче стационарны, то…
Так же в шоке от некоторых предложений в комментариях по решению этой проблемы.
Вот как я вижу правильную, с моей точки зрения, организацию работы:
- Система именования техники: XXX-YYY-ZZZ000
где XXX — трехбуквенное название компании, очень удобно, когда есть некая группа компаний, даже если фирма одна, то всё равно придумывается название или берётся с инвентарного номера в бухучёте, если, конечно, инвентарники начинаются с букв.
YYY — Имя города/улицы, если есть филиалы в других городах или на других улицах. Удобно для географической привязки
ZZZ — две или три буквы типа устройства: prn — принтер, ws — рабочая станция, srv — сервер, для контроллера домена, можно взять dc.
000 — числовой порядковый номер в этом городе (филиале), всегда записывается так: 001.
- На всех системниках, принтерах и прочих сетевых устройствах имеется две наклейки: первая — его номер по системы, описанной выше. Вторая — номер места в котором он установлен, тут делается так, как удобней, либо сквозная нумерация мест по всей фирме или филиалу, либо делить, к примеру на этажи, на кабинеты.
PS. Чтобы наклейки не отдирались, не используйте скотч и обычную бумагу, используйте клеящеюся бумагу. Тем, на ком ещё висит инвентаризация рекомендую добавить штрих-код.
- Каждое рабочее место, в данном случае, это физический стол, поддон с принтером и т.д., так же пронумеровано
- На компьютерах стоит BGInfo, которое отображает на фоновом рисунке имя компьютера
- Каждая иконка «Мой компьютер» содержит в себе и имя компьютера: «Мой компьютер (rgk-msc-ws001)»
Если на фирме нет юзеров постоянно работающих на разных компьютерах (пример: студенты в ВУЗах), то ФИО юзера записывается в описании компьютера, как в AD, так и на самом компьютере. Там-же можно писать и место установки.
Этого достаточно, чтобы избежать ненужных вопросов юзерам, достаточно спросить у него имя компьютера, где его искать рассказывается на инструктаже, после прохождения которого, юзер расписываться в ведомости. Или же спросить место установки (которое всегда есть перед глазами юзера), если, к примеру, вышел из строя компьютер или монитор, а системник задвинут далеко и ничего не прочитать.
Далее, на предыдущем месте работы у меня было с принтерами всё просто — перемещение компьютера в соответствующее Подразделение в AD, автоматически удаляло старые принтера и устанавливало те принтеры, которые стояли в подразделении. А если пользователь (преподаватель) сидел в учебной аудитории, то принтеры так-же автоматически подключались к нему и он просто печатал, после шёл к принтеру на своей кафедре и забирал распечатку. И никаких звонков с просьбой установить принтер.
При этом, никто никаким образом не мог сам установить чужой принтер себе на компьютер, у нас был редакционно-издательский центр со своими цветными принтерами, на которых печатали только они.
Написал, вдруг, кому-то пригодится для организации своей работы так, чтобы целый день читать Хабр. :)
это отпадает:
На компьютерах стоит BGInfo, которое отображает на фоновом рисунке имя компьютера
политика организации запрещает использовать ее, хотя я очень даже за использование этой программы
PS. Чтобы наклейки не отдирались, не используйте скотч и обычную бумагу, используйте клеящеюся бумагу. Тем, на ком ещё висит инвентаризация рекомендую добавить штрих-код.
Что-то на практике наоборот вышло — бумага самоклейка быстро отваливается, пришлось перейти на обычную и скотч. И скотч кстати разный, даже от партии зависит — какой-то нормально клеится, какой-то хуже.
\\PS
. Который так и называется: «Добавь себе принтер».Настоящий Джедай...
stackoverflow
As far as off-the-shelf solutions go, many commercial 802.11 networking infrastructures support triangulation of both host computers and «rogue» APs by comparing the signal strength of the source among all the APs that can see the signal. I've used trapeze wireless systems that import autocad maps that include things like building materials (to compensate for different signal attenuations from drywall vs brick vs steel reinforced concrete). It then draws a picture that has all stations and APs. I believe cisco and aruba have similar tools.
По идее если получится определять локацию компьютера (роутер, к которому подключен компьютер и принтер), то можно будет избавиться от этого всего гемороя…
Но я подозреваю что не все роутеры поддерживают такую крутую штуку как определение расстояния по силе сигнала, да еще и направление ж нужно определять
Пока это кажется очень дорогим и наверное не сильно возможным, особенно для дешевых роутеров, нужно куча другого еще оборудования. Но, если бы это было возможно то было бы классно :)
Если вдруг поиграешься, то оповести в комментариях.
Как я создал систему установки принтеров на работе