Drukowanie z Sambą

Niektóre Puppy nie mają narzędzia 'smbspool' (wpisz "which smbspool" w terminalu by się dowiedzieć). Puppy deweloper "Patriot" (nazwa na forum) zaleca specjalny skrypt sterownika CUPS nazwany 'smbc' gdy używany, co z kolei używa narzędzia 'smbclient' by drukować. To działa, jednak Patriot zrobił wielki krok dalej i napisał skrypt nazywany 'smb' co wskakuje zamieniając 'smbspool'.

Ta strona pomocy jest w dwóch częściach: pierwsza część opisuje Patriota 'smb' wskakujący zamiennik dla 'smbspool' (co jest zalecanym wyborem), druga część opisuje wcześniejszy skrypt 'smbc'...

PART 1: smbspool wskakująca zamiana

Wydobądź z Forum post: http://www.murga-linux.com/puppy/viewtopic.php?t=57610

Ostatnio, BarryK zapytał o samba-tng nie istniejący smbspool i czy drukowanie przez smbclient zadziała. Zaleciłem jemu że to rzeczywiście możliwe wydrukować raw/postcript z smbclient i skrypt smbc (z http://willem.engen.nl/projects/cupssmb/) jest tym co on może użyć lub bazować na tym.

Przyjrzałem się bliżej całemu smbspool i nabazgrałem skrypt wskakującej zamiany smbspool wysyłającego zadania drukowania do smbclient. Ten skrypt luźno bazuje na wewnętrznej logice smbspool samby, używa formatu parametru wejścia smbspool i próbuje imitować zachowanie smbspool. Ten skrypt jest przeznaczony do pracy z istniejącym CUPS urządzeniem URI.

Format urządzenia URI (Uniform Resource Identifier) dla smbspool jest określony jako:
Proszę zauważyć obowiązkowe minimum pogrubiono: smb:// [username[:password]@] [workgroup/] server [:port] /printer

Przykłady:

Funkcje:
- Pełna obsługa formatu smb URI. To pozwala danym uwierzytelnienia być osadzonymi w URI.
- Pozwala drukować na wielu uwierzytelnionych serwerach bez brudu oddzielnych plików uwierzytelnienia.
- Obsługa opcji kopii drukowania, jeśli wymagane.
- Obsługa smbclient z obu samba i samba-tng.

Ręczna instalacja:
[już zainstalowane w tym Puppy] 
1. Zapisz skrypt jako /usr/lib/cups/backend/smb.
2. Daj jemu tylko uprawnienia właściciela (# chmod 700 /usr/lib/cups/backend/smb). (Jeśli to opuścisz, smbclient zaatakuje czytanie pliku smb.conf)
3. Skonfiguruj drukarkę smb jeśli wymagane & zrób test drukowania

Finalne uwagi:
- Ten skrypt jest przeznaczony do uruchomienia na platformie puppy >= 4.0 z cups >= 1.1.x.
- Rozwój i testowanie jest zrobione w puppy412 z cups-1.3.11, samba-3.0.37 i samba-tng-0.5rc1
- i tak, jeśli ktoś się dziwi, jestem zdolny drukować raw/ps używając bądź samba bądź samba-tng smbclient.




PART 2: Działanie CUPS z serwerami drukowania Windows

Wydobądź z: http://willem.engen.nl/projects/cupssmb/
Willem van Engen

CUPS używa smbspool(8) by drukować strony na serwerach windows. To wydaje się nie działać, gdy drukowanie z  smbclient(1) działa (pewna ulga). Chcąc by działało, stworzyłem własny backend CUPS który używa drugiego zamiast pierwszego. To też pozwala rozwiązać problem z widocznym hasłem w windows w urządzeniu uri (co jest pokazane w interfejsie www). Zauważ że to wciąż praca w toku: jest używane z sukcesem, ale teraz i potem I napotkałem problemy. Ta strona będzie aktualizowana odpowiednio.

Następnie są sekcje dla używania powyższych programów. Finalna sekcja daje możliwe rozwiązania dla używania serwerów drukowania windows z CUPS gdy smbspool(8) nie działa.

Drukowanie z smbspool

CUPS backend(7) to program, zazwyczaj ulokowany w /usr/lib/cups/backend/, który wysyła zadanie do drukarki lub serwera drukowania. CUPS używa smbspool(8), który jest częścią samba, by buforować zadania na serwerach windows. Do tego końca, jest link symboliczny z /usr/lib/cups/backend/smb do /usr/bin/smbspool.

By przetestować backend, jest możliwe wywołać smbspool(8) ręcznie. Na przykład:

DEVICE_URI="smb://server/printer" smbspool 1234 me sometitle 1 <test.ps

Drukowanie z smbclient

Jest też możliwe użyć smbclient(1) by drukować. Gdy jest się zalogowanym do udziału drukarki na serwerze windows, można wydać komendę print by drukować plik. Na przykład:

smbclient -W Domain -U me //server/printer
Added interface ip=xxx.xxx.xxx.xxx bcast=xxx.xxx.xxx.xxx nmask=xxx.xxx.xxx.xxx
Password: password
Domain=[Domain] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
smb: \> print test.ps
printing file test.ps as test.ps
xxxxx bytes printed

smb: \> quit

CUPS backend używający smbclient

Gdy smbspool(8) nie działa, może być możliwe mieć drukowanie działające z smbclient(1) zamiast tego. To może być zrobione przez dodanie własnego backendu CUPS. Pobierz plik smbc, zapisz go jako /usr/lib/cups/backend/smbc i uczyń wykonywalnym. Bądź pewny zrobić go własnością root. [ZAUWAŻ: ten skrypt jest już w Puppy]

Powinieneś wciąż stworzyć plik /etc/samba/printing.auth zawierający listy uwierzytelniające windows, jak to:

username = s123456
password = mypassword
domain = TUE

By ochronić go od ciekawskich oczu, zrób go własnością użytkownika cupsys (lub cokolwiek CUPS backend uruchomiony w systemie) i zrobić go odczytywalnym tylko dla tego użytkownika. Dla użytkowników Ubuntu: ten użytkownik to cupsys w Feisty, ale lp w Gutsy.

Pozostanie ustawienie CUPS. Zalecam dodać drukarkę używając web interface z urządzeniem uri z protokołem smbc, jak smbc://physfp.phys.tue.nl/n-IS2060PS

Jeśli zdarzyło ci się użyć AppArmor w trybie wymuszonym, trzeba dodać #include <abstractions/samba> do profilu cupsd.


Ta strona utworzona przez Barrego Kaulera Czerwiec 2010