Created attachment 5072 [details] log самбы с log level = 10 При наличии символов кириллицы в имени принтера (попытка переименовать принтер на самбе из Windows) происходит отказ подсистемы печати. Лог на стороне самбы: [2011/08/26 13:08:42.282189, 1] ../librpc/ndr/ndr.c:421(ndr_push_error) ndr_push_error(5): Bad character conversion [2011/08/26 13:08:42.282356, 1] ../librpc/ndr/ndr.c:421(ndr_push_error) ndr_push_error(5): Bad character conversion [2011/08/26 13:08:42.282378, 0] rpc_server/srv_pipe.c:2439(api_rpcTNP) api_rpcTNP: \spoolss: SPOOLSS_GETPRINTER failed. [2011/08/26 13:08:42.334397, 1] smbd/ipc.c:447(api_fd_reply) api_fd_reply: INVALID PIPE HANDLE: 3578 [2011/08/26 13:08:42.354360, 1] ../librpc/ndr/ndr.c:421(ndr_push_error) ndr_push_error(5): Bad character conversion [2011/08/26 13:08:42.354435, 1] ../librpc/ndr/ndr.c:421(ndr_push_error) ndr_push_error(5): Bad character conversion [2011/08/26 13:08:42.354453, 0] rpc_server/srv_pipe.c:2439(api_rpcTNP) api_rpcTNP: \spoolss: SPOOLSS_GETPRINTER failed. [2011/08/26 13:12:23.181281, 1] smbd/service.c:1251(close_cnum) management-vm (192.168.4.124) closed connection to service print$ [2011/08/26 13:12:25.742662, 1] ../librpc/ndr/ndr.c:421(ndr_push_error) ndr_push_error(5): Bad character conversion [2011/08/26 13:12:25.742831, 1] ../librpc/ndr/ndr.c:421(ndr_push_error) ndr_push_error(4): ndr_push_relative_ptr2_end:relative_end_offset 0 < offset 112 [2011/08/26 13:12:25.742854, 0] rpc_server/srv_pipe.c:2439(api_rpcTNP) api_rpcTNP: \spoolss: SPOOLSS_GETPRINTER failed. Настройки кодировок в smb.conf: dos charset = CP866 unix charset = UTF8 display charset = UTF8 Проблема проявляется на самбе версий 3.5.8, 3.5.9, 3.5.10, 3.6.0 из архивов сизифа и на 3.5.10 из p6. При этом 3.5.8-alt1, собранная из src.rpm в окружении 5.1, проблем не вызывает. Для возвращения в рабочее состояние требуется перезапуск smbd с удалением ntprinters.tdb.
Наблюдение: Система p6, samba 3.5.10-alt2 Имя принтера "HP P1505 у закупщиков" приводит к неработоспособности spoolss. Имя принтера "PH P1505 у за-купщиков" НЕ приводит к неработоспособности spoolss. Закономерности вывести не удается - на других принтерах помогает замена одного или двух кириллических символов на латиницу или "-" помогает избежать отказа подсистемы печати. Вот только понять логику в определении порядкового номера и количества подлежащих замене символов мне не удалось...
Интересно, в какой кодировке название принтера у Windows и в каком виде оно передается. Судя по всему, отлуп дает обычный iconv , самба тут бессильна. И сравните настройки систем на p6 и 5.1.
Created attachment 5073 [details] Версии пакетов и вывод testparm на работающей машине (5.1)
Created attachment 5074 [details] Версии пакетов и вывод testparm на НЕработающей машине (p6)
Насколько я знаю, Windows использует unicode (UTF16LE в нотации iconv). Тестовый файл со строкой "HP P1505 у закупщиков", созданный в Windows в кодировке unicode, корректно обрабатывается iconv на всех системах (командная строка cat test.txt | iconv -f utf16le -t utf8). Подскажите пожалуйста, что еще можно посмотреть в настройках системы. Готов тестировать, так как очень заинтересован в решении этой проблемы - планировал переход на p6 на нескольких серверах, использующих самбу и кириллические имена принтеров.
(В ответ на комментарий №5) > Насколько я знаю, Windows использует unicode (UTF16LE в нотации iconv). > Тестовый файл со строкой "HP P1505 у закупщиков", созданный в Windows в > кодировке unicode, корректно обрабатывается iconv на всех системах (командная > строка cat test.txt | iconv -f utf16le -t utf8). > > Подскажите пожалуйста, что еще можно посмотреть в настройках системы. Готов > тестировать, так как очень заинтересован в решении этой проблемы - планировал > переход на p6 на нескольких серверах, использующих самбу и кириллические имена > принтеров. Надо смотреть в google, там много на 'ndr_push_error(5): Bad character conversion' . К сожалению, мейнтейнер samba появится через неделю.
Спасибо, будем ждать майнтейнера. У меня мысли закончились. Без знания кода samba похоже не разобраться. Логика работы/отказа мне совершенно не ясна. Имена "Принтер HP P1505 у закупщиков", "P1505 у закупщиков", "HP P1505 у за-купщиков", "H P1505 у закупщиков", "HPP1505 у закупщиков" не вызывают проблем, а "HP P1505 у закупщиков", "Принтер у закупщиков", "HP 1505 у закупщиков" - рушат подсистему печати. Для проверки пробовал установить RPM самбы от 5.1 (которые в 5.1 работают), на p6. Включая libtdb и libtalloc. Не помогло. Бинарники, совпадающие по md5, работают на 5.1 и не работают на p6.
Уважаемый мейнтейнер samba и другие уважаемые люди, знающие код samba! Подскажите пожалуйста, эта проблема не может ли всплыть где-нибудь в другом месте, кроме имени принтера? Например, при печати с клиента Windows какого-либо задания с русским именем, имени шары или ее комментария, содержащего кириллицу. Хотелось бы понять, можно ли использовать 6 платформу как надежный файловый сервер/сервер печати. Если проблема только в имени принтера, то ее можно обойти, не используя кириллицу (хотя конечно костыль тот еще), но если возможно ее проявление например на заданиях печати с кириллицей в имени...
Я, к сожалению, пока не добрался до построения стенда для дебага данной проблемы. С заданиями на печать (чисто теоретически) ситуация должна быть иная. Надо смотреть.
Извините, не совсем понятно, вы подключаете сетевой принтер с линукс машины на windows по smb, и переименовываете уже настроенный? Может тогда попробовать избавится от самбы, настроив печать с windows на linux по ipp? http://social.technet.microsoft.com/Forums/en-US/w7itproui/thread/f5e69f33-29ff-4c86-a7ed-3b066f0b642d Не забудьте подкрутить /etc/cups/cupsd.conf дабы разрешить печать по сети.
(В ответ на комментарий №10) > Извините, не совсем понятно, вы подключаете сетевой принтер с линукс машины на > windows по smb, и переименовываете уже настроенный? Я подключаю принтер на линукс-машине с Windows-машины. Для подключения использую samba, установленную на линукс-машине, с установленными драйверами принтера для Windows и настроенными разрешениями для Windows. Изначально (на линукс-машине в printers.conf cupsа или smb.conf) принтер имеет имя prn-hp-p1505. После переименования его с windows-клиента в желаемое имя "Принтер HP P1505 у закупщиков" получаем полный отказ подсистемы печати в samba. Про возможности обойти это знаю - например, отказ от использования кириллицы в имени принтера проблему решает. Покоя не дают две вещи - то, что одни и те же бинарники РАБОТАЮТ на p5.1 и НЕ РАБОТАЮТ на p6, и отсутствие уверенности в том, что подобные проблемы с кириллицей не вылезут где-нибудь еще. На всякий случай - действия по шагам. Все происходит с Windows-клиента. 1. Открываем Проводник. 2. В адресной строке вводим имя линукс-машины с самбой и принтерами (\\server). 3. Заходим в папку "Принтеры и факсы" на \\server. 4. Правой кнопкой по нужному принтеру в списке - Переименовать. 5. Переименовываем принтер в "Принтер HP P1505 у закупщиков". В результате получаем отказ spoolss с приведенной выше диагностикой. Вернуть самбу в рабочее состояние можно удалением соответствующих tdb-файлов.
Устарело