gifts2017

ubuntu + 1Cv8 + winXP-7-8. Решение проблемы с печатью на расшаренные принтеры клиентов

Опубликовал Виктор Пинчуков (viptextil) в раздел Администрирование - Системное

Принтеров и операционок много, драйверов под Ubuntu на всех не хватает.
Возникла идея печатать cups-PDF, в расшаренную по smb папку. Написать программу под винду, которая будет мониторить эту папку и в зависимости от пользователя печатать *.pdf на принтер, указанный для данного пользователя. Текущая версия программы 1.3

Часть первая. Продолжение данной статьи читайте ubuntu + 1Cv8 + winXP-7-8. Печать на электронную почту

Спасибо людям, благодаря которым возникла данная статья: Atheist, Landre за дельные подсказки neomatrix, со статьи которого Установка терминального сервера на базе Ubuntu Server 12.04 LTS 64-bit для работы c платформой 1C 8.3 все и началось.

При переходе с Windows server  на Ubuntu возникли проблемы печати. Оказалось, что в отличие от винды драйвера под Ubuntu либо есть не всегда, либо работают плохо. Печать на расшаренные принтеры виндовых клиентов из-под Ubuntu - вообще отдельная тема.

Рекомендация: Если Вы только собираетесь переходить на Linux и есть возможность купить принтер - покупайте принтеры HP с сетевым интерфейсом (RJ-45) это избавит Вас от головной боли с печатью. Если принтеры уже куплены - читайте дальше.

Настраиваем Ubuntu Server: Предполагаем, что сервер имеет ip 192.168.1.100

Устанавливаем систему печати в PDF

sudo apt-get install cups-pdf

Устанавливаем Samba:

sud apt-get install samba samba-common system-config-samba

Если Вы ставили терминальный сервер поверх десктопной версии Ubuntu, следующие два пункта можете пропустить, если ставили поверх Ubuntu Server - нужно будет отключить защиту cups-pdf. Иначе невозможно будет изменить каталог назначения для pdf-файлов.

Устанавливаем набор программ для работы с apparmor

sudo apt-get install apparmor-utils

Отключение защиты для модуля usr.sbin.cupsd

sudo aa-complain /etc/apparmor.d/usr.sbin.cupsd

Создаем каталог для печати, который потом сделаем доступным для виндовых клиентов, и делаем его доступным для всех.

sudo  mkdir /srv/samba/pdf

sudo chmod -R 2777 /srv/samba/pdf

sudo chown -R root:sambashare /srv/samba/pdf

Далее редактируем файл /etc/cups/cups-pdf.conf

Для начала сохраняем резервную копию.

sudo cp /etc/cups/cups-pdf.conf /etc/cups/cups-pdf.conf.bak

Редактируем файл настроек cups-pdf

sudo nano /etc/cups/cups-pdf.conf

Далее в файле меняем опции:

Out /srv/samba/pdf/${USER}

Label 2

AnonUMask 0000

UserUMask 0000

Сохраняем файл и рестартуем cups.

sudo service cups restart

Далее Пуск->Настройки-Samba (У меня XFCE4)

Samba1

Поскольку каталог будет мониториться программой, видимость предоставлять не обязательно, и даже не желательно.

Samba2

 sudo sevice smbd restart

 Все, на этом настройка линуксовой части закончена. Переходим к настройке винды.

 


 

Рекомендация: Все файлы, которые вы качаете из интернета проверяйте на virustotal.com . Это не защитит на 100 %, но вероятность заражения резко уменьшается. 

 

В качестве виндового сервера печати я использовал "старушку" с win XP. Не принципиально. Можно выбрать любую клиентскую машину и поставить все на нее.

Ставим на нее все сетевые принтеры всех пользователей.

Printer1

 

Устанавливаем yandex в помощь.

 

Качаем архив old.viptextil.ru/Admin/PdfPrint/PdfPrint.zip

Программа портабельная. Распаковываем в какую нибудь папку.

Настройка программы сводится к редактированию двух INI-файлов.

Редактируем PdfPrint.ini

# BackupDir - если указать каталог, то после распечатки файлы будут переноситься в этот каталог (для отчетности)
# если BackupDir оставить пустым - файлы после распечатки будут удаляться.
BackupDir=

# PdfRootDir - каталог, в который сохраняет файлы cups-pdf, но только снаружи (с точки зрения винды)
# Если адрес линуксового сервера статический - рекомендую ссылаться на сервер через его IP
PdfRootDir=\\192.168.1.100\pdf\

# Маска файлов, создаваемых cups-pdf (именно такая получается при опции Label 2 в cups-pdf.conf)
PdfMask=job_*.pdf

# Принтер по-умолчанию, именно на него будут отправляться все задания от новых пользователей и пользователей не указанных в UserPrinter.ini
DefaultPrinter=HP LaserJet P2050 Series PCL6

# Задержка между опросами PdfRootDir в секундах. Задержка отправки задания печати на принтер будет составлять 2-3 LoopDelaySec
LoopDelaySec=3

# Путь к программе FoxitReader.exe

FoxitReader=c:\Program Files\Foxit Software\Foxit Reader\FoxitReader.exe


#текущее название программы mailsend

MailSend=mailsend1.18.exe


# настройки для gmail.com . Отправка почты осуществляется с ящика googlename@gmail.com
#MailParam=  -enc-type "7bit" -sub "PdfPrint ServName" -f googlename@gmail.com -ssl -port 465 -smtp smtp.gmail.com -auth -user googlename -pass "GoogleUserPass"

 
# настройки для mail.ru .  Отправка почты осуществляется с ящика mailuser@mail.ru
#MailParam=  -enc-type "7bit" -sub "PdfPrint ServName" -f mailuser@mail.ru -ssl -port 465 -smtp smtp.mail.ru -auth -user mailuser@mail.ru -pass "MailUserPass"


#настройки yandex.ru.   Отправка почты осуществляется с ящика yandexuser@yandex.ru
MailParam=  -enc-type "7bit" -sub "PdfPrint ServName" -f yandexuser@yandex.ru -ssl -port 465 -smtp smtp.yandex.ru -auth -user yandexuser@yandex.ru -pass "YandexUserPass"


# Примерный Размер лог-файла в килобайтах. Если 0 - лог файл не создается.
LogSizeKB=1000

# LogLevel 0,1,2,3 default 1. 0=no log, 1=status, 2=error, 3=debug
LogLevel=3

 

Редактируем файл UserPrinter.ini

 

User1=HP LaserJet P2050 Series PCL6
User2=user2@usermail.ru
User3=user3@usergmail.com
User4=HP LaserJet Professional M1212nf MFP
User5=HP LaserJet Professional M1212nf MF


Функционал программы, по отправке файлов на электронную почту описан во второй части статьи ubuntu + 1Cv8 + winXP-7-8. Печать на электронную почту.

User1, User2... User5 это пользователи терминального (и не только) сервера Ubuntu, которые печатают на принтер cups-pdf. Если печатает пользователь, не указанный в файле UserPrinter.ini, его файл буде отправлен на принтер по-умолчанию (указан в файле PdfPrint.ini)

Чтобы было меньше ошибок, рекомендую копировать названия принтеров:

На принтере клик правой кнопкой мыши, свойства

Printer2

 

После того, как все настроено, нужно проверить все в "ручном режиме".

На Ubuntu Server, напечатаем какой-нибудь документ на принтер PDF.

Из под винды провинды проверим, что файл был создан \\192.168.1.100\pdf\User1

Пуск->Выполнить

Выполнить

Находим файл, который только что распечатали, и САМОЕ ГЛАВНОЕ пробуем его удалить.

Если файл защищен от записи, проверяем права доступа на папку и разрешение на запись в Samba.

До тех пор, пока файл не будет нормально удаляться из-под винды, программу PdfPrint.exe запускать нельзя, иначе принтер будет печатать это задание постоянно.

Если все удаляется - запускаем программу PdfPrint.exe и она начинает Работать. Для начала очень полезно просмотреть LOG программы (файл PdfPrint.log в каталоге программы PdfPrint).

Внимание, программа PdfPrint не отбражается в Taskbar, поэтому вырубить ее можно только через диспетчер задач (процесс PdfPrint.exe)

Напомню, что на новых операционках (7-10) программа, помещенная в автозагрузку может не запускаться автоматически, если не отключен UAC. Возможно программу можно запускать через планировщик задач.

Со временем, если программа будет кому-нибудь интересна, оформлю ее в виде windows-службы.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Николай Корнев (kns77) 06.02.16 20:59
2. viptextil.ru (viptextil) 08.02.16 09:37
(1) kns77, Спасибо, идея, видимо, витала в воздухе.
3. Demonster (Demonster) 10.02.16 11:30
Велосипед в кубе. Что мешает поставить принт-серверы и печатать напрямую?

В статье не указаны подводные камни этого "изобретения":
1. Компьютеры с Windows должны быть членами домена или иметь одну и ту же учетную запись, указанную в ubuntu.
2. Сможет ли кто-то после Вас это решение поддерживать? Вы его задокументировали и вместе с исходниками отправили своему руководителю/работодателю?
Или это специально сделано, чтобы не уволили, а если уволят - то будут кланятся?
Подсчитайте время, потраченное на реализацию и установку этого "решения" и сравните со стоимостью самого простого принт-сервера.

P.S. У Вас в статье упоминаются принтеры HP - драйвера на linux есть на все модели. Единственное оправдание этого велосипеда - какой-нибудь GDI принтер типа Canon, Samsung и т.п., под который нет драйвера на linux. Но я бы в этом случае убедил бы руководство купить б/у HP, а эти принтеры продать как можно скорее.
4. viptextil.ru (viptextil) 10.02.16 18:35
(3)Demonster, спасибо за отзыв.
Что мешает поставить принт-серверы и печатать напрямую?
Отсутствие нескольких принтсерверов.
1. Компьютеры с Windows должны быть членами домена или иметь одну и ту же учетную запись, указанную в ubuntu.
Только один компьютер (на котором размещена PdfPrint должен иметь учетную запись ubuntu Доступ к принтерам клиентов идет уже с него. При подключении принтеров пароли можно запоминать.
2. Сможет ли кто-то после Вас это решение поддерживать? Вы его задокументировали и вместе с исходниками отправили своему руководителю/работодателю?
Именно это я и сделал, опубликовав статью на популярном сервисе.
Подсчитайте время, потраченное на реализацию и установку этого "решения" и сравните со стоимостью самого простого принт-сервера.
Развертывание программы занимает час-полтора. Программу я писал в рабочее время. Я хороший администратор, свободного времени у меня много. Для фирмы это не стоит ничего.
P.S. У Вас в статье упоминаются принтеры HP - драйвера на linux есть на все модели.
У меня складывается ощущение, что статью читали Вы не очень внимательно ;-)
Единственное оправдание этого велосипеда - какой-нибудь GDI принтер типа Canon, Samsung и т.п., под который нет драйвера на linux. Но я бы в этом случае убедил бы руководство купить б/у HP,
Фирма развивалась постепенно. У меня большой зоопарк принтеров В основном Canon. Именно после попыток их настроить я и написал программу.
Но я бы в этом случае убедил бы руководство купить б/у HP, а эти принтеры продать как можно скорее.
В моем городе не найти 10 Б/У принтеров HP.
5. Николай Encrypt3r (Ruvim) 07.04.16 05:32
Доброго времени суток. Попробовал данную идею реализовать, но дело в том что pdf файлы кидаются в папку по имени терминального *user*, а не в папку pdf. Соответственно ничего не печатается. Если в самбе указать путь /srv/samba/pdf*user* то все работает. Что я сделал не так?
viptextil; +1 Ответить
6. Виктор Пинчуков (viptextil) 07.04.16 10:52
(5) Ruvim, Все так и должно быть.
Допустим, у вас пользователь user_buh
Тогда файлы должны появляться в папке /srv/samba/pdf/user_buh

На виндовой машине в конфигурационном файле UserPrinter.ini должна быть запись
user_buh=Название_Вашего_Принтера.

Ну, и желательно посмотреть лог-файл PdfPrint.log в каталоге виндовой программы.

Если есть возможность, киньте сюда от последней записи " ### Start PdfPrint"
7. Николай Encrypt3r (Ruvim) 11.04.16 04:39
Дело в том что папки у меня создаются не в pdf, а рядом

(6) viptextil, 20160411-103615 ### Start PdfPrint v1.2 freeware © viptextil.ru 2016
20160411-103615 BackupDir=
20160411-103615 PdfRootDir=\\192.168.2.117\pdfterm1
20160411-103615 PdfMask=job_*.pdf
20160411-103615 PdfRegMask=job_.*\.pdf$
20160411-103615 DefaultPrinter=HP Universal Printing PCL 5
20160411-103615 FoxitReader=c:\Progra~2\Foxits~1\Foxitr~1\Foxitr~1.exe
20160411-103615 LogSizeKB= 1000
20160411-103615 LoopDelaySec= 3
20160411-103615 LogLevel= 3
20160411-103615 User=term1, Printer=HP Universal Printing PCL 5
20160411-103615 User=pdfdkmc, Printer=HP Universal Printing PCL 5
Прикрепленные файлы:
8. Николай Encrypt3r (Ruvim) 11.04.16 05:50
Разобрался, в файле cups-pdf.conf по вышеприведенной инструкции нужно поменять опции Out /srv/samba/pdf${USER}, вот когда так прописать то пользовательские папки будут появляется около основной папки pdf, поменял на Out /srv/samba/pdf/pdf${USER}, папки пользователей стали создаваться в папке pdf (\\192.168.2.117\pdf\pdfterm1) и все заработало. Спасибо.

И еще такой вопрос, у нас работа в браузере, ведется, вот при подключении через RDP страницы пролистываются с торможением, есть ли способ убыстрить как-то.
9. Виктор Пинчуков (viptextil) 11.04.16 09:06
(8) Ruvim, Спасибо, мой косяк, пропустил слэш
опцию следует читать как Out /srv/samba/pdf/${USER}

Сейчас исправлю в тексте.

По-поводу браузера ничего сказать не могу. У меня работает так же как на локальной машине. Возможно что-то с драйверами видеокарты.
10. Виктор Пинчуков (viptextil) 11.04.16 09:27
(8) Ruvim, Измените опцию в файле /etc/cups/cups-pdf.conf
на Out /srv/samba/pdf/${USER}

в файле PdfPrint.ini задайте
PdfRootDir=\\192.168.2.117\pdf

в файле UserPrinter.ini задайте
term1=Printer=HP Universal Printing PCL 5
dkmc=HP Universal Printing PCL 5
11. Николай Encrypt3r (Ruvim) 11.04.16 09:30
(9) viptextil, Спасибо вам большое, за такие понятные инструкции, честно говоря я первый раз по вашей статье установил Ubuntu и настроил терминал. Все понятно. Сделал с первого раза. И еще один вопрос, правда по статье установка Ubuntu там выписали "но в терминале возникли проблемы с переключением языков клавиатуры. Для решения редактируем файл /etc/X11/Xsession" Проблема в том, что пользователи при отключении не выходят из системы, а просто закрывают RDP и при повторном подключении, язык ввода уже не переключается. С этим что-то можно сделать?
12. Виктор Пинчуков (viptextil) 11.04.16 09:43
(11) Ruvim, Спасибо, конечно, но статья по установке терминального сервера не моя, а уважаемого
neomatrix, спасибо ему за это. Я тоже не решил проблему с русским языком, поэтому в панели быстрого запуска поставил кнопочку "Рус/лат", по которой выполняется команда setxkbmap -layout "us,ru" -model "pc105" -option "grp:ctrl_shift_toggle,grp_led:scroll" и объяснил бухгалтерии, что ее нужно нажимать, когда перестает переключаться язык.

Но это к теме не относится, это нужно обсуждать в комментах к установке терминального сервера.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа