Удалённая печать из VNC сессии (Win-Win)

Jul 16, 2013 04:12

Дано:
  1. Локальный компьютер под управлением OS Windows.
  2. Удалённый компьютер под управлением OS Windows.
  3. vnc+ssh сессия с локального на удалённый компьютер.
Требуется:

Обеспечить возможность прямой печати из VNC сессии на локальный компьютер.
Решение?
  1. Убеждаемся, что сетевое имя локального компьютера вменяемое (нет пробелов, нет русских символов и прочего сомнительного бреда).
  2. На локальном компьютере устанавливаем службы печати для UNIX.
    "Панель управления" - "Установка и удаление программ" - "Установка компонентов Windows" - "Другие службы доступа к файлам и принтерам в сети" - [x] "Службы печати для Unix".

    или для ушибленных операционных систем:

    "Панель управления" - "Программы и компоненты" - "Включение или отключение компонентов Windows" - "Службы печати и документов(?)" -> [x] "Службы печати для Unix".

    Естественно, к кастрированным операционным системам это не относится - там подобных вещей нет в принципе.
  3. Активируем службу.
    sc config LPDSVC start= auto
  4. Запускаем службу.
    sc start LPDSVC
  5. Выставляем принтер в общий доступ.
    Имя общего ресурса пишите ЛАТИНСКИМИ БУКВАМИ БЕЗ ПРОБЕЛОВ, лучше всего - строчными. Это имя будет использоваться в качестве имени очереди для печати.

    Уже сейчас можно проверить, работает ли принтер. В терминале введите команду:

    lpr -S %COMPUTERNAME% -P имя_очереди_строчными_буквами "%SystemRoot%\win.ini"

    Принтер должен распечатать файл win.ini (там буквально одна страница, обычно).

    Указывать вместо "%COMPUTERNAME%" - "localhost" бесполезно. Виндовый LPD не принимает задания с локального интерфейса. Хотя и прослушивает его…
  6. В строку подключения VNC сессии добавляем ключ -R 515:%COMPUTERNAME%:515.
    К сожалению, если на системе клиента уже работает LPD сервер, ничего не получится.
  7. Подключаемся к удалённому серверу.
    Можно проверить, работает ли печать, прежде чем продолжать настройку. Введите в удалённом терминале (можно прямо в окне SSH соединения) команду:

    lpr -S localhost -P имя_очереди_строчными_буквами "%SystemRoot%\win.ini"

    Принтер, опять же, должен распечатать файл, на сей раз - с удалённого компьютера.
  8. Устанавливаем новый локальный(!) принтер.
    При установке попросить создать новый порт -> "Standard TCP/IP port" - имя принтера: localhost, имя порта: SSHLPD -> Особое -> Протокол LPR, имя очереди - имя общего ресурса строчными буквами.

    Драйвер принтера: Generic -> MS Publisher Imagesetter
  9. Пробуем распечатать тестовую страницу. У меня всё работает.

P.S.

Если используется родной драйвер принтера, и на печать уходят коды печати вместо данных, попробуйте добавить параметр обхода обработчика WinPrint:

reg ADD HKLM\SYSTEM\CurrentControlSet\Services\LPDSVC\Parameters /v SimulatePassThrough /d 1 /t REG_DWORD /f

и перезагрузить сервис

sc stop LPDSVC && sc start LPDSVC

it, msft

Previous post Next post
Up