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:
smb://[username[:password]@][workgroup/]server[:port]/printer
Proszę zauważyć obowiązkowe minimum pogrubiono: smb:// [username[:password]@] [workgroup/] server [:port] /printer
Przykłady:
1. smb://PRINTSERVER/HP4V (minimalny parametr smb://server/printer)
2. smb://192.168.1.2/ML1200 (takie jak #1 ale używa adresu IP)
3. smb://zigbert:ladiesman217@/192.168.2.22:9191/MP250 (rozszerzone parametry z nazwą użytkownika, hasłem i portem serwera)
4. smb://dogbert:majesty@SYHDP/DILBERT/LEDCOPIER (rozszerzone parametry z nazwą użytkownika, hasłem i nazwą domeny)
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