Печать на клиентском принтере - ну полный ipp (freenx, nxclient, opennx, ENABLE_CUPS_SERVER_MODE)
Модераторы: dimbor, Модераторы разделов
Печать на клиентском принтере - ну полный ipp
Со спонсорской оказией занялся реализацией ENABLE_CUPS_SERVER_MODE для линуксовых клиентов == пробросом клиентского принтера по ipp в серверный системный купс.
Оный спонсор замечен в правильном понимании религии GPL. Т.е. ничего секретиться ни от кого не будет.
Поскольку ранее не проводил опросов нужности наведения порядка с печатью у линуксовых клиентов, могу только предполагать наличие количества заинтересованных лиц. Вопрос первый: оно обществу надо? Второй - с высот своего опыта использования на вопросы будете отвечать?
А если вдруг да.
Начал изучение предмета с родного клиента, ну который весь из себя статический и цельнометаллический. Оценил оригинальность схемы подключения принтеров на клиентской стороне:
Там тоже вместо системного клиентского юзается пользовательский на сессию, на каждую. (_Почему-то еще cupsd не завершается по окончании, хотя без порта бесполезен_) Зачем-то еще с md5-дайдежест авторизацией. Этот длинючий пароль генерится для каждой сессии свой, и передается в запросе --addprinter на сервер. Но напрашивается тэг "это он зачем так сделал?" ©. При нескольких одновременных сессиях получается несколько купсов у пользователя, но с одним конфигом. И купсы отдаются по паролю последней запущенной. Печать возможна только из нее же. У вас так?
Печатать то оно теперь печатает - уговорено уже . Но виндовый клиент выглядит просто душкой по сравнению.
Вызывает трудности реализация контроля единственности принтера в серверном купсе. Стоит задача проверки доступности принтера перед его добавлением/удалением. В случае smb/cifs принтеров все просто - посредством rpcclient "openprinter" в нужные моменты выясняем, есть ли мальчик на клиенте.
Под линем доступность принтера проверяется lpstat.Он требует пароля с клавиатуры. Ладно - был пропатчен под окружение, но помогает это слабо. Он как лох сначала пробует подключиться без авторизации, отдупляется и замирает в глубоком таймауте на одну минуту. А только потом все показывает по паролю. Плохо.
Далее была найдена в купсе ipptool, которая при должном обучении показывает все хорошо. Уже обрадовался было, но посмотрел в "ТЗ": купс 1.4.2. Там такого нет. И перетаскивать геморрой, бо использует не cups.h как уважающие себя, а *_private.h.
Может я чего важное проглядел? Посоветуйте, кто в теме.
Весь этот ужос лечится, по идее, допилом opennx путем изобретения своеобразного ENABLE_CUPS_CLIENT_MODE. С алгоритмом: ничего не делаем, прокидываем 631-й порт и все.
Но вот что-то у меня самособранный opennx как только включаю "Enable CUPS printing" и жму "login", незамедлительно выпадает в segfault. Руки?
Оный спонсор замечен в правильном понимании религии GPL. Т.е. ничего секретиться ни от кого не будет.
Поскольку ранее не проводил опросов нужности наведения порядка с печатью у линуксовых клиентов, могу только предполагать наличие количества заинтересованных лиц. Вопрос первый: оно обществу надо? Второй - с высот своего опыта использования на вопросы будете отвечать?
А если вдруг да.
Начал изучение предмета с родного клиента, ну который весь из себя статический и цельнометаллический. Оценил оригинальность схемы подключения принтеров на клиентской стороне:
Там тоже вместо системного клиентского юзается пользовательский на сессию, на каждую. (_Почему-то еще cupsd не завершается по окончании, хотя без порта бесполезен_) Зачем-то еще с md5-дайдежест авторизацией. Этот длинючий пароль генерится для каждой сессии свой, и передается в запросе --addprinter на сервер. Но напрашивается тэг "это он зачем так сделал?" ©. При нескольких одновременных сессиях получается несколько купсов у пользователя, но с одним конфигом. И купсы отдаются по паролю последней запущенной. Печать возможна только из нее же. У вас так?
Печатать то оно теперь печатает - уговорено уже . Но виндовый клиент выглядит просто душкой по сравнению.
Вызывает трудности реализация контроля единственности принтера в серверном купсе. Стоит задача проверки доступности принтера перед его добавлением/удалением. В случае smb/cifs принтеров все просто - посредством rpcclient "openprinter" в нужные моменты выясняем, есть ли мальчик на клиенте.
Под линем доступность принтера проверяется lpstat.Он требует пароля с клавиатуры. Ладно - был пропатчен под окружение, но помогает это слабо. Он как лох сначала пробует подключиться без авторизации, отдупляется и замирает в глубоком таймауте на одну минуту. А только потом все показывает по паролю. Плохо.
Далее была найдена в купсе ipptool, которая при должном обучении показывает все хорошо. Уже обрадовался было, но посмотрел в "ТЗ": купс 1.4.2. Там такого нет. И перетаскивать геморрой, бо использует не cups.h как уважающие себя, а *_private.h.
Может я чего важное проглядел? Посоветуйте, кто в теме.
Весь этот ужос лечится, по идее, допилом opennx путем изобретения своеобразного ENABLE_CUPS_CLIENT_MODE. С алгоритмом: ничего не делаем, прокидываем 631-й порт и все.
Но вот что-то у меня самособранный opennx как только включаю "Enable CUPS printing" и жму "login", незамедлительно выпадает в segfault. Руки?
Re: Печать на клиентском принтере - ну полный ipp
Тема весьма актуальна. Помнится, я её поднимал с год назад. Сам, к сожалению, могу только тестить, а не кодить.
На данный момент есть работающая схема - клиент на Мандриве лезет RX терминалом на дебиановский RXсервер (чернез инет), сессия отдаёт задание на печать на роутер клиента (дебиан на котором поднят капс) к которому по самбе прицеплен виндовый принтер. Во как...
На данный момент есть работающая схема - клиент на Мандриве лезет RX терминалом на дебиановский RXсервер (чернез инет), сессия отдаёт задание на печать на роутер клиента (дебиан на котором поднят капс) к которому по самбе прицеплен виндовый принтер. Во как...
Re: Печать на клиентском принтере - ну полный ipp
Не буду подписываться железно на тест, но вообще это интересно мне, а также у меня есть желание и возможность тестировать все это.
А как с поддержкой виндовых клиентов? Оно вообще возможно?
А как с поддержкой виндовых клиентов? Оно вообще возможно?
Re: Печать на клиентском принтере - ну полный ipp
Народ хочет тестить. Ура! Так оно есть у меня. Получите, да только отпишитесь о результатах. Без помощи сообщества все проблемы я задавить не смогу, т.к. даже о них не узнаю.
Сейчас же будет очередная простыня описания текущего момента.
Сначала лирическое отступление, как обычно. Оценил, да и вы оцените, насколько бодрее происходит шевеление, когда кроме удовлетворения чувства собственного достоинства имеется материальный стимул. Спонсор, честь ему и хвала, вовремя выполнил свои обязательства. Ничего не оставалось кроме, как ответить взаимностью.
Теперь по делу: курочился freenx, лежит в голове моего гита.
Замечено безобразное поведение фирмы Этерсофт. На фтп у них залегает rx-etersoft eter8. Его содержимое датируется 10-м годом. Он не соответствует голове даже их же гита. Милицию у нас тоже в полицию переименовали. (Хм..., о чем это я? - Ну да ладно! ©
) Следствие - ни ACL, ни правки некоторых багов там нетуть.
А обещание зарядить мне сборку в unstable, напротив - имеется. Примерно также и датируется.
Значит спасение утопающих дело рук кого? Правильно, ставьте на ваш серверный дистриб rx (если не стоит). Потом git clone с меня, копируйте скрипты в /usr/bin, конфиги - в /etc/nxserver/node.conf.d. Бинарные костыли там не менялись, при глюках libnxredir - требуется make под системой нужной разрядности. Но впрочем это для вин печати.
Далее добиваетесь как можно более чистого вывода nxloadconfig --check. Файлики с большей частью квеста для centos и настройками прицепляю.
На сервере вроде все.
А теперь, что это такое:
Про скачивание с клиента дров: В стандартной схеме подключения (ENABLE_CUPS_SERVER_MODE=0) таковая возможность уже имелась. Встал вопрос, почему же она нихрена не работает. В файле 09-cups.conf наконец вычитал (RTFM):
Ага! Клиентский купс патчить - щас! И ядро. И кофеварку мариванны на соседнем столе.
Была реализована идея заказчика. nxclient-ский nxprint (он там в очень нужный момент вызывается) был переименован и завернут в следующее:
Теперь оно скачет на костылях.
Opennx nxprint не юзает - сам пыхтит. Но в принципе можно его весь в это завернуть. Тем более там все равно после сессии на клиенте остается купс болтаться, заодно порешить и его. Upd 22.04.12: Не покатит. Выяснена очевидная тому причина - ни opennx, ни nxclient сессию не сопровождают. Они ее стартуют и завершаются. Т.ч. - только если в начале прошлые хвосты подчищать.
На очереди доводка написанного. Далее "CUPS_CLIENT_MODE" посредством opennx. При материальной стимуляции появятся сроки, иначе - в режиме вялотекущего хобби.
Более того, готов выступать службой техподдержки по nx. За дорого, сдельно. Свободная касса! ©![;)](./images/smilies/wink.gif)
(2Модераторы: Реклама торговли собой не нарушает каких-нить правил, кроме эстетических?)
Здрас-с-сте! Если это не поддержка виндовых клиентов, то я - Патриарх Кирилл!
А если в смысле поднятия купса под цигвином, то ну его нафик.
Upd 28.11.12: Обнаружено, что убунту не хочет стартовать купс из nxclient-а. Причина - ее apparmor завидует славе Защитника Windows. В сети найдено, что надо его отключить. На препарируемой машине удаленно это сделать не получилось. Пришлось apt-get install apparmor-tools, далее aa_complain - добавить /usr/sbin/cupsd. Ну и права у cupsd проверить (0755).
Еще. На сервере должен быть установлен curl. А в зависимостях к freenx/rx он отсутствует.
Сейчас же будет очередная простыня описания текущего момента.
Сначала лирическое отступление, как обычно. Оценил, да и вы оцените, насколько бодрее происходит шевеление, когда кроме удовлетворения чувства собственного достоинства имеется материальный стимул. Спонсор, честь ему и хвала, вовремя выполнил свои обязательства. Ничего не оставалось кроме, как ответить взаимностью.
Теперь по делу: курочился freenx, лежит в голове моего гита.
Замечено безобразное поведение фирмы Этерсофт. На фтп у них залегает rx-etersoft eter8. Его содержимое датируется 10-м годом. Он не соответствует голове даже их же гита. Милицию у нас тоже в полицию переименовали. (Хм..., о чем это я? - Ну да ладно! ©
![;)](./images/smilies/wink.gif)
А обещание зарядить мне сборку в unstable, напротив - имеется. Примерно также и датируется.
Значит спасение утопающих дело рук кого? Правильно, ставьте на ваш серверный дистриб rx (если не стоит). Потом git clone с меня, копируйте скрипты в /usr/bin, конфиги - в /etc/nxserver/node.conf.d. Бинарные костыли там не менялись, при глюках libnxredir - требуется make под системой нужной разрядности. Но впрочем это для вин печати.
Далее добиваетесь как можно более чистого вывода nxloadconfig --check. Файлики с большей частью квеста для centos и настройками прицепляю.
На сервере вроде все.
А теперь, что это такое:
- Распространение ENABLE_CUPS_SERVER_MODE со всеми его плюшками и на клиентские ipp принтера. Работает из под nxclient и opennx. Из последнего - если повезет. У меня из под 64-х битного, например, не везет.
- Плюс возможность автоматического скачивания дров дрюкера с клиента. Пока только nxclient. При его доделке. Напильником. Ниже.
- Ненароком с высокой вероятностью задавлена бага с бессмертными сессиями. В node_terminate_agent(). Теоретически по крону ничего уже убивать не надо без производственной необходимости. А практика - она как всегда покажет.
Про скачивание с клиента дров: В стандартной схеме подключения (ENABLE_CUPS_SERVER_MODE=0) таковая возможность уже имелась. Встал вопрос, почему же она нихрена не работает. В файле 09-cups.conf наконец вычитал (RTFM):
# FreeNX with ENABLE_CUPS_SEAMLESS will automatically try to download the
# necessary ppds from the client.
...
# Note: You need to use a patched cupsd on client side.
Ага! Клиентский купс патчить - щас! И ядро. И кофеварку мариванны на соседнем столе.
Была реализована идея заказчика. nxclient-ский nxprint (он там в очень нужный момент вызывается) был переименован и завернут в следующее:
Код: Выделить всё
#!/bin/sh
ud="/home/$USER/.nx/cups/ppd"
mkdir -p "$ud" 2>&1 >/dev/null
for fn in /etc/cups/ppd/*.ppd ; do
nfn="$(basename "$fn" | sed "s/\.ppd/_nxdl\.ppd/")"
cp "$fn" "$ud/$nfn" 2>&1 >/dev/null
done
exec /usr/NX/bin/nxprint.orig "$@"
Теперь оно скачет на костылях.
Opennx nxprint не юзает - сам пыхтит. Но в принципе можно его весь в это завернуть. Тем более там все равно после сессии на клиенте остается купс болтаться, заодно порешить и его. Upd 22.04.12: Не покатит. Выяснена очевидная тому причина - ни opennx, ни nxclient сессию не сопровождают. Они ее стартуют и завершаются. Т.ч. - только если в начале прошлые хвосты подчищать.
На очереди доводка написанного. Далее "CUPS_CLIENT_MODE" посредством opennx. При материальной стимуляции появятся сроки, иначе - в режиме вялотекущего хобби.
Более того, готов выступать службой техподдержки по nx. За дорого, сдельно. Свободная касса! ©
![;)](./images/smilies/wink.gif)
(2Модераторы: Реклама торговли собой не нарушает каких-нить правил, кроме эстетических?)
Здрас-с-сте! Если это не поддержка виндовых клиентов, то я - Патриарх Кирилл!
А если в смысле поднятия купса под цигвином, то ну его нафик.
Upd 28.11.12: Обнаружено, что убунту не хочет стартовать купс из nxclient-а. Причина - ее apparmor завидует славе Защитника Windows. В сети найдено, что надо его отключить. На препарируемой машине удаленно это сделать не получилось. Пришлось apt-get install apparmor-tools, далее aa_complain - добавить /usr/sbin/cupsd. Ну и права у cupsd проверить (0755).
Еще. На сервере должен быть установлен curl. А в зависимостях к freenx/rx он отсутствует.
- Вложения
-
centos.tar.gz
- (939 байт) 48 скачиваний
Спасибо сказали:
Re: Печать на клиентском принтере - ну полный ipp
Результаты тестирования.
Платформы:
Сервер - Centos 6.2 x86_64
Клиент - Fedora 16 i686
Проверялись два клиента - стандартный nomachine nxclient 3.5.0-7 i386 (далее просто nxclient) и opennx 0.16.0.708 i386
Надо не забывать на клиенте сделать
nxclient об этом предупреждает когда в настройках соединения хотите добавить принтер, а opennx подло молчит....
Проброс клиентского ipp в системный cups сервера тестировался в двух режимах:
1) предварительно загружен ppd клиентского принтера на сервер в папку /etc/nxserver/ppd - работает на ура с обоими клиентами
2) используется вышеописанный скрипт для автозагрузки: nxclient работает, opennx - нет. Причем, как я понял, ppd должен быть загружен на сервер в папку пользователя /home/<user>/.nx/config/ppd/ так как если ppd там есть, то opennx тоже прекрасно подключает принтер.
Платформы:
Сервер - Centos 6.2 x86_64
Клиент - Fedora 16 i686
Проверялись два клиента - стандартный nomachine nxclient 3.5.0-7 i386 (далее просто nxclient) и opennx 0.16.0.708 i386
Надо не забывать на клиенте сделать
Код: Выделить всё
# chmod 755 /usr/lib/cups/backend/ipp
nxclient об этом предупреждает когда в настройках соединения хотите добавить принтер, а opennx подло молчит....
Проброс клиентского ipp в системный cups сервера тестировался в двух режимах:
1) предварительно загружен ppd клиентского принтера на сервер в папку /etc/nxserver/ppd - работает на ура с обоими клиентами
2) используется вышеописанный скрипт для автозагрузки: nxclient работает, opennx - нет. Причем, как я понял, ppd должен быть загружен на сервер в папку пользователя /home/<user>/.nx/config/ppd/ так как если ppd там есть, то opennx тоже прекрасно подключает принтер.
Re: Печать на клиентском принтере - ну полный ipp
Ну, буду пробовать.Теперь по делу: курочился freenx, лежит в голове моего гита.Теперь по делу: курочился freenx, лежит в голове моего гита.
Мдя. Только сейчас догадался, что мне нужно было гуглить в свое время не по ключевому слову rx или nx, а по ключевому слову dimbor :)Здрас-с-сте! Если это не поддержка виндовых клиентов, то я - Патриарх Кирилл!
Re: Печать на клиентском принтере - ну полный ipp
Можно еще по слову "задница". Правда большинство ссылок не будут иметь отношения к nx. Но они тоже весьма познавательны, я проверял
![;)](./images/smilies/wink.gif)
Казалось бы, причем тут. А притом, что опять идем лечить горло длинным путем:
Занялся opennx, уговорил его отдавать дрова принтера на сервер.
Насквозь недокументированным способом. Но некоторое количество версий клиентских купсов и серверных операционок перебрано. Так что не то чтобы обязано, но в общем должно.
Живет пока в этой ветке. Только собирайте сами, а? Могу поделиться только 64-ым бинарем без статики, но с огромным дебагом.
Также походя обнаружено гадское поведение гномьей принтерной оснастки под центосом. А может не только ее, а может не только под ним. Удовлетворено путем ln -s /usr/lib/cups /usr/libexec/cups. Файлик квеста выше обновил.
По opennx есть масса вопросов, которые в приличном обществе и задавать стыдно. В общем, это я в профильной ветке ща отпишу.
![;)](./images/smilies/wink.gif)
Re: Печать на клиентском принтере - ну полный ipp
Тестировальщики тестировали-тестировали и вытестировали. Что?
Re: Печать на клиентском принтере - ну полный ipp
Так тестируйте с нативным клиентом. Там всего то один файл переименовать, а вместо него положить скрипт.
Re: Печать на клиентском принтере - ну полный ipp
Внезапно © появились новости. rx c cабжем начали собирать как 1.1.2. Это обнадеживает пока слабо. Т.к. собралось вроде только под Альт p6 и Убунту 12.
Оно не удивляет - на каждую версию каждого дистрибутива конкретная чехарда с путями/линками/пермишенами (понаписали, панимашь). Фактически - свой квест надо составлять. И чет мне кажется, что логика этих квестов не по зубам сборочной системе, которая пытается одной spec-урой весь мир накормить. Квесты я конечно постараюсь выкладывать с оказией, но не выход.
Гора к Магомету идти не хотит. Магомет уже пытался переписать freenx на сях, но оболомился - трудоемко и неблагодарно во всех смыслах.
Оно не удивляет - на каждую версию каждого дистрибутива конкретная чехарда с путями/линками/пермишенами (понаписали, панимашь). Фактически - свой квест надо составлять. И чет мне кажется, что логика этих квестов не по зубам сборочной системе, которая пытается одной spec-урой весь мир накормить. Квесты я конечно постараюсь выкладывать с оказией, но не выход.
Гора к Магомету идти не хотит. Магомет уже пытался переписать freenx на сях, но оболомился - трудоемко и неблагодарно во всех смыслах.
Re: Печать на клиентском принтере - ну полный ipp
В очередной раз выражаю огромную благодарность dimbor, который не пожалел личного времени и настроил пропрос принтера в ubuntu..
от себя хочу добавить лишь несколько слов, как написано в этом сообщении что бы печать заработала, надо настроить apparmor. Для этого запускаем
После этого копируем код в текстовый,и обзываем файл nxprint. При этом оригинальный файл надо переименовать в nxprint.orig.
для дистрибутивов x64
для дистрибутивов i386
Собственно различия в скрипте только в последней строке, можно дабавить проверку на версию ядра и все объеденить в один скрипт. (Кто может сделайте красиво)
от себя хочу добавить лишь несколько слов, как написано в этом сообщении что бы печать заработала, надо настроить apparmor. Для этого запускаем
Код: Выделить всё
sudo aa_complain
и вводим /usr/sbin/cupsd.
После этого копируем код в текстовый,и обзываем файл nxprint. При этом оригинальный файл надо переименовать в nxprint.orig.
для дистрибутивов x64
Код: Выделить всё
!/bin/sh
ud="/home/$USER/.nx/cups/ppd"
mkdir -p "$ud" 2>&1 >/dev/null
for fn in /etc/cups/ppd/*.ppd ; do
nfn="$(basename "$fn" | sed "s/\.ppd/_nxdl\.ppd/")"
cp "$fn" "$ud/$nfn" 2>&1 >/dev/null
done
exec /usr/lib/x86_64-linux-gnu/nxclient/bin/nxprint.orig "$@"
для дистрибутивов i386
Код: Выделить всё
#!/bin/sh
ud="/home/$USER/.nx/cups/ppd"
mkdir -p "$ud" 2>&1 >/dev/null
for fn in /etc/cups/ppd/*.ppd ; do
nfn="$(basename "$fn" | sed "s/\.ppd/_nxdl\.ppd/")"
cp "$fn" "$ud/$nfn" 2>&1 >/dev/null
done
exec /usr/lib/i386-linux-gnu/nxclient/bin/nxprint.orig "$@"
Собственно различия в скрипте только в последней строке, можно дабавить проверку на версию ядра и все объеденить в один скрипт. (Кто может сделайте красиво)
AvReg - По для организации Видеонаблюдения на Linux.
ДЭНСИ:КАССА - Рабочее место кассира под Linux.
Терминальные решения под Linux
Консультации по установке 1с+PostgreSQL+Ubuntu.
ДЭНСИ:КАССА - Рабочее место кассира под Linux.
Терминальные решения под Linux
Консультации по установке 1с+PostgreSQL+Ubuntu.
Re: Печать на клиентском принтере - ну полный ipp
Да без проблем. Заходи еще, господин меценат.
Хочу очередной раз обратить внимание, что после каждой сессии на клиенте в памяти остается болтаться юзерский cupsd. От каждой - свой. Это нормально. В смысле, для nxclient-а нормально. Так-то это конечно полное г. - рано или поздно купсы съедят мозг. Пока для оригинального клиента выход видится в заворачивании его в аналогичный скрипт типа
Тогда будет висеть только один процесс после последней сессии. И надеюсь, никто не догадается скрипт от рута запускать - системный купс должен быть жив всегда.
Хочу очередной раз обратить внимание, что после каждой сессии на клиенте в памяти остается болтаться юзерский cupsd. От каждой - свой. Это нормально. В смысле, для nxclient-а нормально. Так-то это конечно полное г. - рано или поздно купсы съедят мозг. Пока для оригинального клиента выход видится в заворачивании его в аналогичный скрипт типа
Код: Выделить всё
#!/bin/bash
pkill cupsd
exec nxclient.orig "$@"
Тогда будет висеть только один процесс после последней сессии. И надеюсь, никто не догадается скрипт от рута запускать - системный купс должен быть жив всегда.
Re: Печать на клиентском принтере - ну полный ipp
Вести с полей. По заявкам телезрителей было проведено разбирательство, что это к линуксовым клиентам в SERVER_MODE принтера цепляться перестали. Через пень колоду (на фоне другой работы) было установлено, что тому две причины: Новый убнтушный cups (1.5.3-0ubuntu6) на клиенте отказывается стартовать с сессией. А когда его удается заставить, делает это крайне неторопливо /китайская подвеска и кличка "тормоз" ©/.
Первую причину номашин конечно поправят когда-нить, а может и уже поправили. А без них обходится так - подменный скрипт nxprint выглядит теперь:
Банально добавляем нужный конфиг путем потрошения оригинального. При первом запуске сессии может не сработать. При втором - обязан, т.к. каталог .nx/cups по счастью не вытирается.
opennx пока не патчил, но там все еще тривиальней.
Вторая причина лечится заменой на сервере nxnode на из гита. Таймауты добавил, потому как порт не сразу прокидывается.
Первую причину номашин конечно поправят когда-нить, а может и уже поправили. А без них обходится так - подменный скрипт nxprint выглядит теперь:
Код: Выделить всё
#!/bin/sh
cfgdir="/home/$USER/.nx/cups"
ud="$cfgdir/ppd"
mkdir -p "$ud" 2>&1 >/dev/null
for fn in /etc/cups/ppd/*.ppd ; do
nfn="$(basename "$fn" | sed "s/\.ppd/_nxdl\.ppd/")"
cp "$fn" "$ud/$nfn" 2>&1 >/dev/null
done
ncfg="$cfgdir/cups-files.conf"
[ ! -e $ncfg ] && {
while read line; do
[ -n "$(echo "$line" | grep "/$USER")" ] && echo "$line" >> $ncfg
done < $cfgdir/cupsd.conf
}
exec nxprint.orig "$@"
Банально добавляем нужный конфиг путем потрошения оригинального. При первом запуске сессии может не сработать. При втором - обязан, т.к. каталог .nx/cups по счастью не вытирается.
opennx пока не патчил, но там все еще тривиальней.
Вторая причина лечится заменой на сервере nxnode на из гита. Таймауты добавил, потому как порт не сразу прокидывается.
Re: Печать на клиентском принтере - ну полный ipp
Может кому это и некропостинг, а кому (мне) самая, что ни не есть производственная необходимость
В процессе эксплуатации родного nxclient-а под wheezy случайно было замечено опять-не-скачивание ppd c клиентского купса 1.5.3 1.5.2. Виной нарастающий градус паранойи в системе.
Удалось дополнить костыль, и выглядит он теперь так:
1) К копированию ppd добавлена установка разрешений на чтение - слетали.
2) В формируемый клиентом cupsd.conf дописываются разрешения на ресурс.
В процессе эксплуатации родного nxclient-а под wheezy случайно было замечено опять-не-скачивание ppd c клиентского купса 1.5.3 1.5.2. Виной нарастающий градус паранойи в системе.
Удалось дополнить костыль, и выглядит он теперь так:
Код: Выделить всё
#!/bin/sh
cfgdir="/home/$USER/.nx/cups"
ud="$cfgdir/ppd"
mkdir -p "$ud" 2>&1 >/dev/null
for fn in /etc/cups/ppd/*.ppd ; do
nfn="$(basename "$fn" | sed "s/\.ppd/_nxdl\.ppd/")"
[ -f "$ud/$nfn" ] && continue
cp "$fn" "$ud/$nfn" 2>&1 >/dev/null
chmod g+r,o+r "$ud/$nfn" 2>&1 >/dev/null
done
ncfg="$cfgdir/cups-files.conf"
[ ! -e $ncfg ] && {
while read line; do
[ -n "$(echo "$line" | grep "/$USER")" ] && echo "$line" >> $ncfg
done < $cfgdir/cupsd.conf
}
if [ -z "$(cat $cfgdir/cupsd.conf | grep "<Location /ppd>")" ]; then
echo " <Location /ppd>
Order Deny,Allow
Deny From All
Allow from 127.0.0.0/8
</Location>
" >> $cfgdir/cupsd.conf
fi
exec nxprint.orig "$@"
1) К копированию ppd добавлена установка разрешений на чтение - слетали.
2) В формируемый клиентом cupsd.conf дописываются разрешения на ресурс.
Re: Печать на клиентском принтере - ну полный ipp
Значится, буду дальше здесь писать хотя бы для того, чтобы было, что почитать холодными зимними ночами в старости.
К прошлому посту добавилось исправление freenx. Исправлен косячок с пятиминутной задержкой подключения принтера.
После поборотия ipp ради нездорового интереса решил посмотреть прокидывание того же принтера по вражеской технологии cifs под линуксом. Расшарил в клиентской самбе, и понеслась:
1) sticky bit на каталоге /var/lib/samba/usershares необходим, о чем оно (самбо) прям так в логах и пишет.
2) use client driver = yes поместить в [global] smb.conf. Там в мане smb.conf целая простыня, которую до конца и не дочитал, если честно. Но серверный check_remote_printer со своим rpcclient без данной вещи обламывается WERR_ACCESS_DENIED.
И все получилось. Задания на печать пуляются даже шустрее, чем через чистый ipp. Обидно, да?
Данные проверочки конечно будут вставленны в opennx, который активно пилится с самыми радужными надеждами.
К прошлому посту добавилось исправление freenx. Исправлен косячок с пятиминутной задержкой подключения принтера.
После поборотия ipp ради нездорового интереса решил посмотреть прокидывание того же принтера по вражеской технологии cifs под линуксом. Расшарил в клиентской самбе, и понеслась:
1) sticky bit на каталоге /var/lib/samba/usershares необходим, о чем оно (самбо) прям так в логах и пишет.
2) use client driver = yes поместить в [global] smb.conf. Там в мане smb.conf целая простыня, которую до конца и не дочитал, если честно. Но серверный check_remote_printer со своим rpcclient без данной вещи обламывается WERR_ACCESS_DENIED.
И все получилось. Задания на печать пуляются даже шустрее, чем через чистый ipp. Обидно, да?
Данные проверочки конечно будут вставленны в opennx, который активно пилится с самыми радужными надеждами.
Re: Печать на клиентском принтере - ну полный ipp
Пробую завести печать через CUPS с nxclient-3.5 на rx@etersoft-1.1.3. Сервер на Сentos7, клиент на клоне Slackware. На стороне сервера отлючен selinux, заменен nxnode на тот, что в git, на стороне клиента nxclient на скрипт приведенный выше. IPTABLE разрешает все. Разрешения на cupsd и ipp стоят 755. Пользователь на сервере добавлен в группу lp.
Когда подключаюсь к серверу с установленной ENABLE_CUPS_SERVER_MODE=1 принтер не появляется, а в логах
На клиенте в логах
Если установить ENABLE_CUPS_SERVER_MODE=0 на сервере запускается отдельный экземпляр cupsd на порту 11000 и появляется принтер, но в строке адреса порт стоит ipp://127.0.0.1:4000
Когда подключаюсь к серверу с установленной ENABLE_CUPS_SERVER_MODE=1 принтер не появляется, а в логах
Код:
23.11 15:33:01: startsession (4316): starting with args ""
23.11 15:33:01: startsession (4316): generate "/home/admin/.nx/C-centosterm.mshome.local-2000-9654268CA0837E1913E19DF19FA86022/options"
23.11 15:33:01: startsession (4316): write xauth script file
23.11 15:33:01: node_start_agent (4316): source profile
23.11 15:33:01: node_start_agent (4316): starting
23.11 15:33:01: startsession (4316): call 'node_start_applications'
23.11 15:33:01: startsession (4316): call 'node_start_agent'
23.11 15:33:01: node_start_applications (4316): starting
23.11 15:33:01: node_start_monitor (4316): staring
23.11 15:33:01: node_start_monitor (4316): call 'node_start_monitor_2_0_0 ""'
23.11 15:33:01: node_start_monitor_2_0_0 (4316): starting
23.11 15:33:01: node_start_applications (4316): source profile
23.11 15:33:01: node_start_applications (4316): source bash profile
23.11 15:33:01: node_start_agent (4316): source bash profile
23.11 15:33:01: node_start_applications (4316): DISPLAY is 2000
23.11 15:33:01: node_start_agent (4316): Start nxagent by command: '/usr/bin/nxagent -persistent -D -name "NX - admin@centosterm.mshome.local:2000 - centos7 (GPL Edition)" -option "/home/admin/.nx/C-centosterm.mshome.local-2000-9654268CA0837E1913E19DF19FA86022/options" -nolisten tcp -dpi 96 :2000'
23.11 15:33:01: node_start_agent (4316): env end
23.11 15:33:01: node_start_agent (4316): NXAgent session type
23.11 15:33:01: node_start_agent (4316): env start XDG_SESSION_ID=4921
HOSTNAME=centosterm.mshome.local
NX_CLIENT=/usr/bin/nxdialog
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=127.0.0.1 54520 22
LC_NUMERIC=C
LC_ALL=ru_RU.UTF-8
USER=admin
LD_LIBRARY_PATH=/usr/lib64:
NXSESSIONID=centosterm.mshome.local-2000-9654268CA0837E1913E19DF19FA86022
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/admin/.local/bin:/home/admin/bin
MAIL=/var/spool/mail/admin
LC_MESSAGES=POSIX
SHADOW_XAUTHORITY=/home/admin/.nx/C-centosterm.mshome.local-2000-9654268CA0837E1913E19DF19FA86022/authority
PWD=/home/admin
LANG=ru_RU.UTF-8
HISTCONTROL=ignoredups
HOME=/home/admin
SHLVL=2
LOGNAME=admin
SSH_CONNECTION=127.0.0.1 54520 127.0.0.1 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
DISPLAY=nx/nx,options=/home/admin/.nx/C-centosterm.mshome.local-2000-9654268CA0837E1913E19DF19FA86022/options:2000
XDG_RUNTIME_DIR=/run/user/1000
LC_TIME=POSIX
XAUTHORITY=/home/admin/.nx/C-centosterm.mshome.local-2000-9654268CA0837E1913E19DF19FA86022/authority
_=/usr/bin/env
23.11 15:33:01: node_start_agent (4316): Wait for NODE_AGENT_PID (4847)
23.11 15:33:01: /usr/bin/nxnode (4942): run nxnode with CMDLINE "a=b&&type=ipp&username=admin&port=4000&session_id=9654268CA0837E1913E19DF19FA86022&printer=HPLJet1200&password=****&model=NULL&defaultPrinter=1"
23.11 15:33:01: cmd_node_addprinter (4942): starting
23.11 15:33:01: cmd_node_addprinter (4942): set NAME = HPLJet1200; DEVICE_URI=ipp://admin:****@127.0.0.1:4000/printers/HPLJet1200
23.11 15:33:01: cmd_node_addprinter (4942): run with ENABLE_CUPS_SERVER_MODE=1
23.11 15:33:01: cmd_node_addprinter (4942): set PNAME = "admin_HPLJet1200", try to install "/etc/nxserver/ppd/HPLJet1200.ppd" - N=, DRV=, PNAME=admin_HPLJet1200.
23.11 15:33:01: check_remote_printer (4942): starting with args "ipp fake_param 4000"
23.11 15:33:01: check_remote_printer (4942): wait for ipp-port 127.0.0.1:4000 - 0
23.11 15:33:02: node_start_applications (4316): Sleep while get a valid DISPLAY (59)
23.11 15:33:02: node_find_application (4316): starting with args "unix-gnome"
23.11 15:33:02: node_find_application (4316): end
23.11 15:33:02: node_find_application (4316): return NODE_STARTX="mate-session"
23.11 15:33:02: node_start_applications (4316): Got NODE_APPLICATION is "mate-session"
23.11 15:33:02: node_start_applications (4316): export CUPS_SERVER=/var/run/cups/cups.sock
23.11 15:33:02: node_start_applications (4316): Starting NODE_APPLICATION with /etc/nxserver/Xsession
23.11 15:33:02: node_start_applications (4316): Start successful. NODE_APP_PID=5386
23.11 15:33:02: node_start_applications (4316): Waiting for NODE_APP_PID
23.11 15:33:02: check_remote_printer (4942): wait for ipp-port 127.0.0.1:4000 - 1
23.11 15:33:03: check_remote_printer (4942): wait for ipp-port 127.0.0.1:4000 - 2
23.11 15:33:04: check_remote_printer (4942): wait for ipp-port 127.0.0.1:4000 - 3
23.11 15:33:05: check_remote_printer (4942): wait for ipp-port 127.0.0.1:4000 - 4
23.11 15:33:06: check_remote_printer (4942): wait for ipp-port 127.0.0.1:4000 - 5
23.11 15:33:07: check_remote_printer (4942): wait for ipp-port 127.0.0.1:4000 - 6
23.11 15:33:08: check_remote_printer (4942): wait for ipp-port 127.0.0.1:4000 - 7
23.11 15:33:09: check_remote_printer (4942): wait for ipp-port 127.0.0.1:4000 - 8
23.11 15:33:10: check_remote_printer (4942): wait for ipp-port 127.0.0.1:4000 - 9
23.11 15:33:11: check_remote_printer (4942): end with res = 0
23.11 15:33:11: cmd_node_addprinter (4942): Remote CUPS not found!
На клиенте в логах
Код:
I [23/Nov/2015:15:32:56 +0300] Listening to 0.0.0.0:20000 (IPv4)
I [23/Nov/2015:15:32:56 +0300] Listening to [v1.::]:20000 (IPv6)
E [23/Nov/2015:15:32:56 +0300] Unknown directive PidFile on line 11.
I [23/Nov/2015:15:32:56 +0300] Remote access is enabled.
D [23/Nov/2015:15:32:56 +0300] Added auto ServerAlias localhost
I [23/Nov/2015:15:32:56 +0300] Loaded configuration file "/home/admin/.nx/cups/cupsd.conf"
D [23/Nov/2015:15:32:56 +0300] Repairing ownership of "/home/admin/.nx/cups/spool"
D [23/Nov/2015:15:32:56 +0300] Repairing access permissions of "/home/admin/.nx/cups/spool"
D [23/Nov/2015:15:32:56 +0300] Repairing ownership of "/home/admin/.nx/cups/cache"
D [23/Nov/2015:15:32:56 +0300] Repairing access permissions of "/home/admin/.nx/cups/cache"
D [23/Nov/2015:15:32:56 +0300] Creating missing directory "/home/admin/.nx/cups/cache/rss"
D [23/Nov/2015:15:32:56 +0300] Repairing ownership of "/home/admin/.nx/cups/cache/rss"
D [23/Nov/2015:15:32:56 +0300] Repairing access permissions of "/home/admin/.nx/cups/cache/rss"
D [23/Nov/2015:15:32:56 +0300] Repairing ownership of "/home/admin/.nx/cups/certs"
D [23/Nov/2015:15:32:56 +0300] Repairing access permissions of "/home/admin/.nx/cups/certs"
D [23/Nov/2015:15:32:56 +0300] Creating missing directory "/home/admin/.nx/cups/certs/certs"
D [23/Nov/2015:15:32:56 +0300] Repairing ownership of "/home/admin/.nx/cups/certs/certs"
D [23/Nov/2015:15:32:56 +0300] Repairing access permissions of "/home/admin/.nx/cups/certs/certs"
D [23/Nov/2015:15:32:56 +0300] Repairing ownership of "/home/admin/.nx/cups"
D [23/Nov/2015:15:32:56 +0300] Repairing access permissions of "/home/admin/.nx/cups"
D [23/Nov/2015:15:32:56 +0300] Repairing ownership of "/home/admin/.nx/cups/ppd"
D [23/Nov/2015:15:32:56 +0300] Repairing access permissions of "/home/admin/.nx/cups/ppd"
D [23/Nov/2015:15:32:56 +0300] Repairing ownership of "/home/admin/.nx/cups/cupsd.conf"
D [23/Nov/2015:15:32:56 +0300] Repairing access permissions of "/home/admin/.nx/cups/cupsd.conf"
D [23/Nov/2015:15:32:56 +0300] Repairing ownership of "/home/admin/.nx/cups/printers.conf"
D [23/Nov/2015:15:32:56 +0300] Repairing ownership of "/home/admin/.nx/cups/passwd.md5"
D [23/Nov/2015:15:32:56 +0300] Repairing ownership of "/home/admin/.nx/cups/spool/tmp"
D [23/Nov/2015:15:32:56 +0300] Repairing access permissions of "/home/admin/.nx/cups/spool/tmp"
I [23/Nov/2015:15:32:56 +0300] Configured for up to 100 clients.
I [23/Nov/2015:15:32:56 +0300] Allowing up to 100 client connections per host.
I [23/Nov/2015:15:32:56 +0300] Creating CUPS default administrative policy:
I [23/Nov/2015:15:32:56 +0300] <Policy default>
I [23/Nov/2015:15:32:56 +0300] JobPrivateAccess default
I [23/Nov/2015:15:32:56 +0300] JobPrivateValues default
I [23/Nov/2015:15:32:56 +0300] SubscriptionPrivateAccess default
I [23/Nov/2015:15:32:56 +0300] SubscriptionPrivateValues default
I [23/Nov/2015:15:32:56 +0300] <Limit Create-Job Print-Job Print-URI Validate-Job>
I [23/Nov/2015:15:32:56 +0300] Order Deny,Allow
I [23/Nov/2015:15:32:56 +0300] </Limit>
I [23/Nov/2015:15:32:56 +0300] <Limit Send-Document Send-URI Cancel-Job Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Authenticate-Job CUPS-Get-Document>
I [23/Nov/2015:15:32:56 +0300] Order Deny,Allow
I [23/Nov/2015:15:32:56 +0300] Require user @OWNER @SYSTEM
I [23/Nov/2015:15:32:56 +0300] </Limit>
I [23/Nov/2015:15:32:56 +0300] <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>
I [23/Nov/2015:15:32:56 +0300] Order Deny,Allow
I [23/Nov/2015:15:32:56 +0300] AuthType Default
I [23/Nov/2015:15:32:56 +0300] Require user @SYSTEM
I [23/Nov/2015:15:32:56 +0300] </Limit>
I [23/Nov/2015:15:32:56 +0300] <Limit All>
I [23/Nov/2015:15:32:56 +0300] Order Deny,Allow
I [23/Nov/2015:15:32:56 +0300] </Limit>
I [23/Nov/2015:15:32:56 +0300] </Policy>
I [23/Nov/2015:15:32:56 +0300] Full reload is required.
E [23/Nov/2015:15:32:56 +0300] Filter "hpgltops" not found.
I [23/Nov/2015:15:32:56 +0300] Loaded MIME database from "/usr/share/cups/mime" and "/home/admin/.nx/cups": 37 types, 45 filters...
D [23/Nov/2015:15:32:56 +0300] Loading printer HPLJet1200...
D [23/Nov/2015:15:32:56 +0300] cupsdMarkDirty(P-----)
D [23/Nov/2015:15:32:56 +0300] cupsdSetBusyState: newbusy="Dirty files", busy="Not busy"
D [23/Nov/2015:15:32:56 +0300] load_ppd: Loading /home/admin/.nx/cups/ppd/HPLJet1200.ppd...
D [23/Nov/2015:15:32:56 +0300] cupsdRegisterPrinter(p=0xb951d7f8(HPLJet1200))
D [23/Nov/2015:15:32:56 +0300] Loading printer Secretar...
D [23/Nov/2015:15:32:56 +0300] cupsdMarkDirty(P-----)
D [23/Nov/2015:15:32:56 +0300] cupsdSetBusyState: newbusy="Dirty files", busy="Dirty files"
D [23/Nov/2015:15:32:56 +0300] load_ppd: Loading /home/admin/.nx/cups/ppd/Secretar.ppd...
D [23/Nov/2015:15:32:56 +0300] cupsdRegisterPrinter(p=0xb950cf10(Secretar))
D [23/Nov/2015:15:32:56 +0300] cupsdLoadRemoteCache: Not loading remote cache.
D [23/Nov/2015:15:32:56 +0300] Scanning /home/admin/.nx/cups/spool for jobs...
I [23/Nov/2015:15:32:56 +0300] Full reload complete.
D [23/Nov/2015:15:32:56 +0300] cupsdCleanFiles(path="/home/admin/.nx/cups/spool/tmp", pattern="(null)")
I [23/Nov/2015:15:32:56 +0300] Cleaning out old files in "/home/admin/.nx/cups/spool/tmp"...
D [23/Nov/2015:15:32:56 +0300] cupsdCleanFiles(path="/home/admin/.nx/cups/cache", pattern="*.ipp")
I [23/Nov/2015:15:32:56 +0300] Cleaning out old files in "/home/admin/.nx/cups/cache"...
I [23/Nov/2015:15:32:56 +0300] Listening to 0.0.0.0:20000 on fd 7...
I [23/Nov/2015:15:32:56 +0300] Listening to [v1.::]:20000 on fd 8...
I [23/Nov/2015:15:32:56 +0300] Resuming new connection processing...
D [23/Nov/2015:15:32:56 +0300] cupsdSetBusyState: newbusy="Dirty files", busy="Dirty files"
D [23/Nov/2015:15:32:56 +0300] Discarding unused server-started event...
D [23/Nov/2015:15:32:57 +0300] Report: clients=0
D [23/Nov/2015:15:32:57 +0300] Report: jobs=0
D [23/Nov/2015:15:32:57 +0300] Report: jobs-active=0
D [23/Nov/2015:15:32:57 +0300] Report: printers=2
D [23/Nov/2015:15:32:57 +0300] Report: printers-implicit=0
D [23/Nov/2015:15:32:57 +0300] Report: stringpool-string-count=326
D [23/Nov/2015:15:32:57 +0300] Report: stringpool-alloc-bytes=6072
D [23/Nov/2015:15:32:57 +0300] Report: stringpool-total-bytes=6656
I [23/Nov/2015:15:33:27 +0300] Saving printers.conf...
D [23/Nov/2015:15:33:27 +0300] cupsdSetBusyState: newbusy="Not busy", busy="Dirty files"
Если установить ENABLE_CUPS_SERVER_MODE=0 на сервере запускается отдельный экземпляр cupsd на порту 11000 и появляется принтер, но в строке адреса порт стоит ipp://127.0.0.1:4000
Re: Печать на клиентском принтере - ну полный ipp
Оно говорит, что порт принтера на сервере, тот самый 4000, не подает признаков жизни.
При ENABLE_CUPS_SERVER_MODE=0 эта проверка вообще не делается, поэтому и принтер добавляется.
На сервере должна быть строчка у юзера в .nx/C-*/session типа такой:
Если эта самая строчка есть, порт недоступен у клиента (там он 20000) и надо рыть его логи сессии или зафайерволенность.
При ENABLE_CUPS_SERVER_MODE=0 эта проверка вообще не делается, поэтому и принтер добавляется.
На сервере должна быть строчка у юзера в .nx/C-*/session типа такой:
Код: Выделить всё
Info: Listening to CUPS connections on port '4000'.
Если эта самая строчка есть, порт недоступен у клиента (там он 20000) и надо рыть его логи сессии или зафайерволенность.
Re: Печать на клиентском принтере - ну полный ipp
Еще, к данной ситуевине не относится - просто не доходит до этой стадии, но.
Помнится, под центосью что-то там с sudoerrs было: то-ли в конфиге что-то дописывать надо, то-ли каталог там другой у системы. Здесь в какой-то теме это дело умучили, только поискать.
Помнится, под центосью что-то там с sudoerrs было: то-ли в конфиге что-то дописывать надо, то-ли каталог там другой у системы. Здесь в какой-то теме это дело умучили, только поискать.
Re: Печать на клиентском принтере - ну полный ipp
На клиенте порт взводится, файервол там отключен, Лог клиента я привел выше
и что должно запускаться по sudo?
Код:
Listening to 0.0.0.0:20000 on fd 7...
и что должно запускаться по sudo?
Re: Печать на клиентском принтере - ну полный ipp
Вот порты клиента
Код:
root@admin-pc:/var/log# ps ax |grep cupsd
3482 ? Ss 0:00 /usr/sbin/cupsd -C /etc/cups/cupsd.conf
4947 ? Ss 0:00 /usr/sbin/cupsd -C /home/admin/.nx/cups/cupsd.conf
5027 pts/0 S+ 0:00 grep cupsd
root@admin-pc:/var/log# netstat -atupl
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:64586 *:* LISTEN 4269/skype
tcp 0 0 *:57391 *:* LISTEN 3416/rpc.statd
tcp 0 0 *:sunrpc *:* LISTEN 3126/rpc.portmap
tcp 0 0 *:10000 *:* LISTEN 3643/perl
tcp 0 0 localhost:ipp *:* LISTEN 3482/cupsd
tcp 0 0 *:47545 *:* LISTEN -
tcp 0 0 *:12000 *:* LISTEN 4948/nxssh
tcp 0 0 *:20000 *:* LISTEN 4947/cupsd
tcp6 0 0 [::]:20000 [::]:* LISTEN 4947/cupsd
udp 0 0 *:sunrpc *:* 3126/rpc.portmap
udp 0 0 *:624 *:* 3416/rpc.statd
udp 0 0 *:ipp *:* 3482/cupsd
root@admin-pc:/var/log# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Re: Печать на клиентском принтере - ну полный ipp
С купсом клиента понятно, уже видел. Что сам клиент в лог пишет?
На сервере, т.к. купс там системный, запускается sudo lpadmin для добавления принтера. Но у вас до этого не доходит.
В session сервера про купс есть что-то?
Re: Печать на клиентском принтере - ну полный ipp
Если у вас не секретный сервер, можете дать в ЛС адресок с ключом nx и паролем юзера. Попробую со своим принтером прицепиться. Это действо позволит точно определить, где косяк - на сервере или клиенте.
Re: Печать на клиентском принтере - ну полный ipp
Теперь начался прикол с sudo
Код:
24.11 17:28:03: node_start_agent (10531): Wait for NODE_AGENT_PID (11066)
24.11 17:28:03: /usr/bin/nxnode (11154): run nxnode with CMDLINE "a=b&&type=ipp&username=admin&port=4000&session_id=E973B687E129A1027F7ACF2C94F02E88&printer=HPLJet1200&password=****&model=NULL&defaultPrinter=1"
24.11 17:28:03: cmd_node_addprinter (11154): starting
24.11 17:28:03: cmd_node_addprinter (11154): set NAME = HPLJet1200; DEVICE_URI=ipp://admin:****@127.0.0.1:4000/printers/HPLJet1200
24.11 17:28:03: cmd_node_addprinter (11154): run with ENABLE_CUPS_SERVER_MODE=1
24.11 17:28:03: cmd_node_addprinter (11154): set PNAME = "admin_HPLJet1200", try to install "/etc/nxserver/ppd/HPLJet1200.ppd" - N=, DRV=, PNAME=admin_HPLJet1200.
24.11 17:28:03: check_remote_printer (11154): starting with args "ipp HPLJet1200 4000 admin ****"
24.11 17:28:03: cmd_node_addprinter (11154): invoke /usr/bin/sudo /usr/sbin/lpadmin -p admin_HPLJet1200 -P /etc/nxserver/ppd/HPLJet1200.ppd -v ipp://admin:****@127.0.0.1:4000/printers/HPLJet1200 -E
24.11 17:28:03: cmd_node_addprinter (11154): FAILED to install printer "admin_HPLJet1200": sudo: sorry, you must have a tty to run sudo
24.11 17:28:04: node_start_applications (10531): Sleep while get a valid DISPLAY (59)
24.11 17:28:04: node_find_application (10531): starting with args "unix-gnome"
24.11 17:28:04: node_find_application (10531): end
24.11 17:28:04: node_find_application (10531): return NODE_STARTX="mate-session"
24.11 17:28:04: node_start_applications (10531): Got NODE_APPLICATION is "mate-session"
24.11 17:28:04: node_start_applications (10531): export CUPS_SERVER=/var/run/cups/cups.sock
24.11 17:28:04: node_start_applications (10531): Starting NODE_APPLICATION with /etc/nxserver/Xsession
24.11 17:28:04: node_start_applications (10531): Start successful. NODE_APP_PID=11600
24.11 17:28:04: node_start_applications (10531): Waiting for NODE_APP_PID
Re: Печать на клиентском принтере - ну полный ipp
![:rolleyes:](./images/smilies/rolleyes.gif)
Re: Печать на клиентском принтере - ну полный ipp
Для истории квочу сюда квест из лички:
Еще предположение, хз как там в центосе:
Дальше
Клиент чист, аки слеза - у меня не подключается тоже.
Причина: netcat в центоси обзывается nc. Это была бы не беда, оно в конфигах исправляется, да только ключика -z (zero i/o mode) у него нету - работать проверка не будет. Т.ч. надо либо скачивать в центось аутентичный netcat, либо отрубать эту проверку нахрен.
А именно, в /usr/bin/nxnode, найти блок
Код: Выделить всё
if [ "$1" = "ipp" ]; then # checking ipp printer port only res=0 for (( i=10; $i; --i )) ; do nxlog "$FUNCNAME ($$): wait for ipp-port 127.0.0.1:$3 - $((10-i))" $COMMAND_NETCAT -znvw 1 127.0.0.1 $3 2> /dev/null > /dev/null [ $? -eq 0 ] && { res=1; break; } sleep 1 done nxlog "$FUNCNAME ($$): end with res = $res" & echo $res; return 0; fi
Содержимое блока от if до fi заменить на
Код: Выделить всё
echo 1; return 0;
Еще предположение, хз как там в центосе:
Просто, например, в дебиановском репе есть пакеты netcat, netcat-traditional, netcat-openbsd на выбор. Вот второй он как раз тот, что надо.
Дальше
Заменил блок, после пришлось вручную перекинуть в /etc/nxserver/ppd/ файл принтера, теперь ругнулось на sudo. Буду дальше ковырять
Когда на /etc/nxserver/ppd/ поставлено 777, и в системе установлен curl, драйвер туда скачивается с клиента автоматически.
Re: Печать на клиентском принтере - ну полный ipp
Продолжим наши танцы. Принтер появляется, но не печатает
errorlog CUPSD
nx session на сервере
nxnode-.log
shares_priv/@p@admin_HPLJet1200
netstat на сервере
errorlog CUPSD
Код:
E [25/Nov/2015:11:07:59 +0300] [Job 1] The printer is not responding.
W [25/Nov/2015:11:08:03 +0300] CreateProfile failed: org.freedesktop.ColorManager.AlreadyExists:profile id 'admin_HPLJet1200-Gray..' already exists
nx session на сервере
Код:
NXAGENT - Version 3.5.0
Copyright © 2001, 2011 NoMachine.
See http://www.nomachine.com/ for more information.
Info: Agent running with pid '23406'.
Session: Starting session at 'Wed Nov 25 11:08:02 2015'.
Info: Proxy running in server mode with pid '23406'.
Info: Waiting for connection from '127.0.0.1' on port '6000'.
Info: Accepted connection from '127.0.0.1'.
Info: Connection with remote proxy completed.
Info: Using ADSL link parameters 512/24/1/0.
Info: Using agent parameters 5000/10/50/0/0.
Info: Using cache parameters 4/4096KB/8192KB/8192KB.
Info: Using pack method 'adaptive-7' with session 'gnome'.
Info: Using product 'LFE/None/LFEN/None'.
Info: Using ZLIB data compression 1/1/32.
Info: Using ZLIB stream compression 4/4.
Info: No suitable cache file found.
Info: Listening to X11 connections on display ':2000'.
Info: Listening to CUPS connections on port '4000'.
Info: Established X client connection.
Info: Using shared memory parameters 1/1/1/2048K.
Info: Using alpha channel in render extension.
Info: Not using local device configuration changes.
InitOutput: Set ru_RU.UTF-8 locale
nxagentXkbGetRules: WARNING! Failed to stat file [/usr/lib64/nxserver/lib/X11/xkb/rules/xorg]: Неизвестная ошибка -1.
keyboard file created
SessionPath not defined
Session: Session started at 'Wed Nov 25 11:08:03 2015'.
Info: Screen [0] resized to geometry [1024x768] fullscreen [0].
Info: Accepted new connection to CUPS server.
Info: Closed connection to CUPS server.
Info: Accepted new connection to CUPS server.
Info: Accepted new connection to CUPS server.
Info: Closed connection to CUPS server.
Info: Accepted new connection to CUPS server.
Info: Closed connection to CUPS server.
nxnode-.log
Код:
25.11 11:08:02: startsession (22881): starting with args ""
25.11 11:08:02: startsession (22881): generate "/home/admin/.nx/C-centosterm.mshome.local-2000-BF769B7F02B8C6D6F451CB6570D3F6C7/options"
25.11 11:08:02: startsession (22881): write xauth script file
25.11 11:08:02: node_start_agent (22881): starting
25.11 11:08:02: node_start_agent (22881): source profile
25.11 11:08:02: startsession (22881): call 'node_start_applications'
25.11 11:08:02: node_start_monitor (22881): staring
25.11 11:08:02: startsession (22881): call 'node_start_agent'
25.11 11:08:02: node_start_monitor_2_0_0 (22881): starting
25.11 11:08:02: node_start_applications (22881): starting
25.11 11:08:02: node_start_monitor (22881): call 'node_start_monitor_2_0_0 ""'
25.11 11:08:02: node_start_applications (22881): source profile
25.11 11:08:02: node_start_agent (22881): source bash profile
25.11 11:08:02: node_start_applications (22881): source bash profile
25.11 11:08:02: node_start_agent (22881): NXAgent session type
25.11 11:08:02: node_start_agent (22881): Wait for NODE_AGENT_PID (23406)
25.11 11:08:02: node_start_agent (22881): Start nxagent by command: '/usr/bin/nxagent -persistent -D -name "NX - admin@centosterm.mshome.local:2000 - centos7 (GPL Edition)" -option "/home/admin/.nx/C-centosterm.mshome.local-2000-BF769B7F02B8C6D6F451CB6570D3F6C7/options" -nolisten tcp -dpi 96 :2000'
25.11 11:08:02: node_start_agent (22881): env end
25.11 11:08:02: node_start_agent (22881): env start XDG_SESSION_ID=5285
HOSTNAME=centosterm.mshome.local
NX_CLIENT=/usr/bin/nxdialog
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=127.0.0.1 54718 22
LC_NUMERIC=C
LC_ALL=ru_RU.UTF-8
USER=admin
LD_LIBRARY_PATH=/usr/lib64:
NXSESSIONID=centosterm.mshome.local-2000-BF769B7F02B8C6D6F451CB6570D3F6C7
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/admin/.local/bin:/home/admin/bin
MAIL=/var/spool/mail/admin
LC_MESSAGES=POSIX
SHADOW_XAUTHORITY=/home/admin/.nx/C-centosterm.mshome.local-2000-BF769B7F02B8C6D6F451CB6570D3F6C7/authority
PWD=/home/admin
LANG=ru_RU.UTF-8
HISTCONTROL=ignoredups
HOME=/home/admin
SHLVL=2
LOGNAME=admin
SSH_CONNECTION=127.0.0.1 54718 127.0.0.1 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
DISPLAY=nx/nx,options=/home/admin/.nx/C-centosterm.mshome.local-2000-BF769B7F02B8C6D6F451CB6570D3F6C7/options:2000
XDG_RUNTIME_DIR=/run/user/1000
LC_TIME=POSIX
XAUTHORITY=/home/admin/.nx/C-centosterm.mshome.local-2000-BF769B7F02B8C6D6F451CB6570D3F6C7/authority
_=/usr/bin/env
25.11 11:08:02: node_start_applications (22881): DISPLAY is 2000
25.11 11:08:02: /usr/bin/nxnode (23503): run nxnode with CMDLINE "a=b&&type=ipp&username=admin&port=4000&session_id=BF769B7F02B8C6D6F451CB6570D3F6C7&printer=HPLJet1200&password=****&model=NULL&defaultPrinter=1"
25.11 11:08:02: cmd_node_addprinter (23503): starting
25.11 11:08:03: cmd_node_addprinter (23503): set NAME = HPLJet1200; DEVICE_URI=ipp://admin:****@127.0.0.1:4000/printers/HPLJet1200
25.11 11:08:03: cmd_node_addprinter (23503): run with ENABLE_CUPS_SERVER_MODE=1
25.11 11:08:03: cmd_node_addprinter (23503): set PNAME = "admin_HPLJet1200", try to install "/etc/nxserver/ppd/HPLJet1200.ppd" - N=, DRV=, PNAME=admin_HPLJet1200.
25.11 11:08:03: check_remote_printer (23503): starting with args "ipp HPLJet1200 2000 admin ****"
25.11 11:08:03: cmd_node_addprinter (23503): delete printer "admin_HPLJet1200" (port:2000) - for reinstall
25.11 11:08:03: check_remote_printer (23503): starting with args "ipp HPLJet1200 4000 admin ****"
25.11 11:08:03: cmd_node_addprinter (23503): invoke /usr/bin/sudo /usr/sbin/lpadmin -p admin_HPLJet1200 -P /etc/nxserver/ppd/HPLJet1200.ppd -v ipp://admin:****@127.0.0.1:4000/printers/HPLJet1200 -E
25.11 11:08:03: cmd_node_addprinter (23503): printer "admin_HPLJet1200" installed
25.11 11:08:03: node_find_application (22881): starting with args "unix-gnome"
25.11 11:08:03: node_find_application (22881): return NODE_STARTX="mate-session"
25.11 11:08:03: node_find_application (22881): end
25.11 11:08:03: node_start_applications (22881): Got NODE_APPLICATION is "mate-session"
25.11 11:08:03: node_start_applications (22881): export CUPS_SERVER=/var/run/cups/cups.sock
25.11 11:08:03: node_start_applications (22881): Starting NODE_APPLICATION with /etc/nxserver/Xsession
25.11 11:08:03: node_start_applications (22881): Start successful. NODE_APP_PID=23980
25.11 11:08:03: node_start_applications (22881): Waiting for NODE_APP_PID
shares_priv/@p@admin_HPLJet1200
Код:
/etc/nxserver/ppd/HPLJet1200.ppd&ipp://admin:884b96eebbcbd581@127.0.0.1:4000/printers/HPLJet1200&-u allow:admin,guest,root&1
netstat на сервере
Код:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6582/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 5139/cupsd
tcp 0 0 0.0.0.0:6010 0.0.0.0:* LISTEN 22547/sshd: nx@nott
tcp 0 0 0.0.0.0:4000 0.0.0.0:* LISTEN 23406/nxagent
tcp 0 0 127.0.0.1:22 127.0.0.1:54718 ESTABLISHED 22878/sshd: admin [
tcp 0 0 127.0.0.1:6000 127.0.0.1:53019 ESTABLISHED 23406/nxagent
tcp 0 0 127.0.0.1:53019 127.0.0.1:6000 ESTABLISHED 23490/nc
tcp 0 0 192.168.1.199:36970 192.168.1.1:139 ESTABLISHED 21835/mc
tcp 0 0 192.168.1.199:22 192.168.1.251:42589 ESTABLISHED 22545/sshd: nx [pri
tcp 0 0 127.0.0.1:54718 127.0.0.1:22 ESTABLISHED 22876/ssh
tcp 0 0 192.168.1.199:22 192.168.1.251:42587 ESTABLISHED 21772/sshd: root@pt
tcp 0 0 192.168.1.199:36969 192.168.1.1:139 ESTABLISHED 21835/mc
tcp6 0 0 :::22 :::* LISTEN 6582/sshd
tcp6 0 0 :::6010 :::* LISTEN 22547/sshd: nx@nott
Re: Печать на клиентском принтере - ну полный ipp
На сервере вроде все нормуль. В session имеются признаки открытия порта купса.
Теперь надо смотреть клиента, его купс - error.log, access.log
Могу опять подключиться своим, проверить.
Теперь надо смотреть клиента, его купс - error.log, access.log
Могу опять подключиться своим, проверить.