SMB HOWTO pl


SMB-Howto Autor:David Wood, dwood@plugged.net.au v1.0, 10 August 1996 WWeerrssjjaa ppoollsskkiieeaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll v1.12, 26 Lipca 1997 Jest to dokument z serii HOWTO (Jak To Zrobić). Opisuje on jak używać Session Message Protocol, zwanego też NetBIOS lub LanManager z Linux- em. Dokument ten zostaÅ‚ napisany w standardzie ISO-8859-2. OryginaÅ‚ można znaleźć pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sun­ site/docs/HOWTO. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie. 1.1. Dalsze informacje. 2. Instalacja. 3. Uruchamianie demonów. 4. Ogólna konfiguracja. (/etc/smb.conf) 5. UdostÄ™pnianie dysku Linux-owego komputerom z Windows. 6. UdostÄ™pnianie dysku spod Windows maszynom z Linux-em. 7. UdostÄ™pnianie drukarki Linux-owej komputerom z Windows. 8. UdostÄ™pnianie drukarki spod Windows komputerom z Linux-em. 9. Prawa autorskie i ZakoÅ„czenie. 9.1. Prawa autorskie. 9.2. PodziÄ™kowania. 9.3. Od tÅ‚umacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. Jest to dokument z serii HOWTO (Jak To Zrobić). Opisuje on jak używać z Linuxem Session Message Protocol, zwanego też NetBIOS lub LanManager. Dokument ten jest prowadzony przez Davida Wooda dwood@plugged.net.au. Wszelkie dodatki, modyfikacje lub poprawki mogÄ… być przesÅ‚ane do mnie, aby je później umieÅ›cić w nastÄ™pnej wersji. Protokół SMB używany jest przez Microsoft Windows 3.11, NT i 95 aby współdzielić zasoby dyskowe i drukarki. Maszyny Unix-owe (w tym także Linux) mogÄ… korzystać z tych zasobów używajÄ…c narzÄ™dzi stworzonych przez Andrew Tridgella. SÄ… cztery rzeczy, które można zrobić SambÄ…: 1. UdostÄ™pniać dysk Linux-owy dla komputerów z Windows. 2. UdostÄ™pniać dysk Windows-owy dla komputerów z Linux-em. 3. UdostÄ™pniać drukarkÄ™ pod Linux-em dla Windows. 4. UdostÄ™pniać drukarkÄ™ pod Windows dla Linux-a. Wszystko to zostaÅ‚o opisane w tym dokumencie. Disclaimer. Procedury i skrypty albo dziaÅ‚aÅ‚y u autora, albo zostaÅ‚y opisane jako dziaÅ‚ajÄ…ce przez tych, którzy je napisali. Różne konfiguracje mogÄ… nie dziaÅ‚ać z podanymi tutaj informacjami. JeÅ›li odkryjesz takÄ… sytuacjÄ™ możesz napisać do autora list z sugestiÄ… na ulepszenie tego dokumentu, ale autor nic nie gwarantuje. A czego siÄ™ spodziewaÅ‚eÅ› ? W koÅ„cu autor jest tyklo konsultantem. 11..11.. DDaallsszzee iinnffoorrmmaaccjjee.. Dokument ten jest próbÄ… opisania jak skonfigurować na Linux-ie podstawowe serwisy SMB zwiÄ…zane z plikami i drukarkami. Samba jest bardzo zÅ‚ożonym i kompletnym pakietem. Nie ma sensu, żeby kopiować tutaj wszystko to co jest zawarte w dokumentacji dla tego pakietu. Dalszych informacji możesz szukać w: · Dokumentacji do Samby, która jest częściÄ… dystrybucji. Dystrybucja jest dostÄ™pna pod adresem: ftp.icm.edu.pl · HOWTO dotyczÄ…cym drukowania (Printing HOWTO) · oraz w mini-HOWTO Print2Win. 22.. IInnssttaallaaccjjaa.. NajÅ›wieższe źródÅ‚a Samby dostÄ™pne sÄ… pod adresem ftp.icm.edu.pl w katalogu /pub/samba. JeÅ›li instalowaÅ‚eÅ› dystrybucjÄ™ Red Hat mogÅ‚eÅ› wybrać instalacjÄ™ Samby jako jednÄ… z opcji. Niektóre inne dystrybycje też oferujÄ… binaria Samby. NastÄ™pujÄ…ce demony sÄ… wymagane do pracy z SambÄ…. Zwykle znajdujÄ… siÄ™ one w katalogu /usr/sbin i sÄ… uruchamiane w momencie startu systemu albo przez demon inetd. PrzykÅ‚adowe skrypt znajdujÄ… siÄ™ w sekcji ``Uruchamianie demonów.'' ______________________________________________________________________ smbd (Demon SMB) i nmbd (Åšwiadczy usÅ‚ugi nameservera NetBIOS-u) ______________________________________________________________________ Zwykle w systemie instalowane sÄ… nastÄ™pujÄ…ce binaraia w katalogu /usr/bin: ______________________________________________________________________ smbclient (Klient dla maszyn Unix-owych), smbprint (skrypt do drukowania na drukarce przyÅ‚Ä…czonej do hosta SMB), smbprint.sysv (To samo co wczeÅ›niej, ale dla systemu UNIX SVR4), smbstatus (WyÅ›wietla bieżące poÅ‚Ä…czenia SMB na lokalnym hoÅ›cie), smbrun (Główny skrypt do uruchamiania aplikacji na hoÅ›cie SMB) ______________________________________________________________________ Dodatkowo zawarty jest w tym dokumencie skrypt o nazwie "print", który jest pożytecznym dokoÅ„czeniem skryptu smbprint. Pakiet Samba jest prosty w instalacji. ÅšciÄ…gnij go z podanego wczeÅ›niej miejsca i przeczytaj plik README znajdujÄ…cy siÄ™ w dystrybucji. Jest jeszcze plik docs/INSTALL.txt, który podaje krok po kroku co należy zrobić, aby zainstalować SambÄ™. PostÄ™pujÄ…c wraz z instalacjÄ…, umieść demony w /usr/sbin i binaria w /usr/bin. Zainstaluj strony do podrÄ™cznika systemowego "man" w /usr/local/man. Kiedy bÄ™dziesz instalowaÅ‚ pakiet Samba, bÄ™dziesz musiaÅ‚ podać miejsce, gdzie ma siÄ™ znajdować plik konfiguracyjny smb.conf. Z reguÅ‚y jest to katalog /etc, ale możesz go umieÅ›cić, gdzie ci siÄ™ podoba. Dla dalszych instrukcji zaÅ‚ożymy, że plik konfiguracyjny umieÅ›ciÅ‚eÅ› w /etc, plik logujÄ…cy to /var/log/samba-log.%m i katalog blokujÄ…cy to /var/lock/samba. Zainstaluj plik konfiguracyjny smb.conf. Przejdź do katalogu, gdzie zostaÅ‚a skompilowana Samba. Zajrzyj do katalogu examples/simple i przeczytaj plik README. Skopiuj znaleziony tam plik smb.conf do /etc. OOSSTTRROOŻŻNNIIEE !!!!!! JeÅ›li masz dystrybucjÄ™ Linux-a, która miaÅ‚a SambÄ™ i zainstalowaÅ‚eÅ› jÄ… to pewnie masz już plik smb.conf w katalogu /etc i lepiej zacznij od tego pliku. JeÅ›li nie chcesz umieszczać pliku konfiguracyjnego w /etc, to umieść go tam, gdzie chcesz i zrób symboliczne doÅ‚Ä…czenie: ______________________________________________________________________ ln -s /gdzie/jest/smb.conf /etc/smb.conf ______________________________________________________________________ 33.. UUrruucchhaammiiaanniiee ddeemmoonnóóww.. Dwoma demonami SMB sÄ…: /usr/sbin/smbd i /usr/sbin/nmbd. Możesz je uruchomić przez demona inetd lub jako osobne procesy. JeÅ›li konfigurujesz na staÅ‚e serwer plikowy, to powinny one być uruchamiane przez inetd po to, żeby je ponownie uruchomić jeÅ›li z jakiegoÅ› powodu przestanÄ… dziaÅ‚ać. JeÅ›li chcesz korzystać z Samby tylko czasami, to możesz je uruchomić z któregoÅ› ze skryptów startowych w katalogu /etc/rc.d albo po prostu od rÄ™ki wtedy kiedy je potrzebujesz. Aby uruchomić demony przez inetd umieść nastÄ™pujÄ…ce linie w pliku /etc/inetd.conf: ______________________________________________________________________ Serwis NetBIOS dla Samby # netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd ______________________________________________________________________ NastÄ™pnie wyÅ›lij sygnaÅ‚ HUP do procesu nr 1: ______________________________________________________________________ kill -HUP 1 ______________________________________________________________________ Dla użytkowników dystrybucji Red Hat. Aby uruchomić te demony ze skryptów startowych, umieść nastÄ™pujÄ…cy skrypt w katalogu /etc/rc.d/init.d/smb i doÅ‚Ä…cz je symbolicznie do plików podanych w komentarzu: ______________________________________________________________________ #!bin/sh # # /etc/rc.d/init.d/smb - startuje i zatrzymuje serwis SMB # # NastÄ™pujÄ…ce pliki powinny być symbolicznymi doÅ‚Ä…czeniami do # tego pliku: # /etc/rc.d/rc1.d/K35smb (Zatrzymuje serwis SMB podczas # zamkniÄ™cia systemu. # /etc/rc.d/rc3.d/S91smb (Startuje serwis SMB w trybie # wieloużytkownikowym # /etc/rc.d/rc6.d/K35smb (zatrzymuje serwis SMB podczas resetu) # # Biblioteka funkcji etc/rc.d/init.d/functions # Konfiguracja sieci etc/sysconfig/network # Sprawdź czy jesteÅ›my w sieci [ ${NETWORKING} = "no" ] && exit 0 # Zobacz jak zostaliÅ›my wywoÅ‚ani case "$1" in start) echo -n "Starting SMB services: " daemon smbd -D daemon nmbd -D echo touch /var/lock/subsys/smb ;; stop) echo -n "Shutting down SMB services: " killproc smbd killproc nmbd rm -f /var/lock/subsys/smb echo "" ;; *) echo "Usage: smb {start|stop}" exit 1 esac ______________________________________________________________________ Od tÅ‚umacza: JeÅ›li używasz dystrybucji Slackware. Umieść poniższy fragment w skrypcie startowym /etc/rc.d/rc.local: ______________________________________________________________________ # czy jesteÅ›my w sieci [ ${NETWORKING} = "no" ] && exit 0 # Uruchmon demony Samby /usr/sbin/smbd -D /usr/sbin/nmbd -D ______________________________________________________________________ 44.. OOggóóllnnaa kkoonnffiigguurraaccjjaa.. ((//eettcc//ssmmbb..ccoonnff)) Konfiguracja Samby na Unix-ie jest kontrolowana jednym plikiem: /etc/smb.conf. W pliku tym umieszczasz zasoby jakie chcesz udostÄ™pnić dla Å›wiata i jakie restrykcje chcesz wprowadzić. Ponieważ ta sekcja opisuje udostÄ™pnianie dysków i drukarek Linux-owych Windowsom, plik smb.conf bÄ™dzie najprostszym z możliwych. Nie martw siÄ™ o szczegóły. Późniejsze sekcje wprowadzÄ… ogólny koncept. Każda sekcja pliku zaczyna siÄ™ od nazwy jak np.: global, homes, printers itp. Sekcja global definiuje kilka ogólnych zmiennych, które bÄ™dÄ… siÄ™ odnosić do wszystkich udostÄ™pnianych zasobów. Sekcja homes pozwala użytkownikom na dostÄ™p do ich (i tyklo ich) katalogów domowych na lokalnej maszynie Linux-owej. JeÅ›li jakiÅ› użytkownik Windows bÄ™dzie chciaÅ‚ skorzystać z udostÄ™pnianych zasobów, to zostanie podÅ‚Ä…czony do swojego katalogu domowego. Zauważ, że aby to zrobić użytkownik musi mieć swoje konto na maszynie Linux-owej. Poniższy przykÅ‚adowy plik smb.conf pozwala użytkownikom na dostÄ™p do swoich katalogów domowych i na zapis do katalogu tymczasowego. Aby użytkownik Windows zobaczyÅ‚ udostÄ™pniane zasoby, Linux musi być w tej samej sieci lokalnej. Użytkownik Windows po prostu doÅ‚Ä…cza dysk sieciowy z Menedżera Plików lub Eksploratora Windows. W nastÄ™pnych sekcjach bÄ™dÄ… dodawane kolejne linie do tego pliku, aby umożliwić dostÄ™p do wiÄ™kszej iloÅ›ci zasobów. ______________________________________________________________________ etc/smb.conf ; ; Po wprowadzeniu zmian do tego pliku zrestartuj demony Samby ; kill -9 `pidof smbd`; kill -9 `pidof nmbd` ; /usr/sbin/smbd; /usr/sbin/nmbd [global] Umieść to w pliku jeÅ›li chcesz konto anonimowe guest account = nobody log file = /var/log/samba-log.%m lock directory = /var/lock/samba share modes = yes [homes] comment = Katalogi Domowe browseable = no read only = no create mode = 0750 [tmp] comment = Miejsce na pliki tymczasowe path = /tmp read only = no public = yes ______________________________________________________________________ 55.. UUddoossttęęppnniiaanniiee ddyysskkuu LLiinnuuxx--oowweeggoo kkoommppuutteerroomm zz WWiinnddoowwss.. Jak widać na powyższym przykÅ‚adzie udostÄ™pnianie dysków Linux-owych użytkownikom Windows jest proste. DostÄ™p do zasobów udostÄ™pnianych poprzez SambÄ™ można w bardzo dużym stopniu kontrolować. Aby udostÄ™pnić wszystkim jakieÅ› zasoby, dodaj poniższe linie do smb.conf: ______________________________________________________________________ [public] comment = Public Stuff path = /home/public public = yes writable = yes printable = yes ______________________________________________________________________ Aby umożliwić zapis do tego katalogu tylko dla czÅ‚onków grupy staff, zmodyfikuj te linie w nastÄ™pujÄ…cy sposób: ______________________________________________________________________ [public] comment = Public Stuff path = /home/public public = yes writable = yes printable = no write list = @staff ______________________________________________________________________ WiÄ™cej informacji na temat różnych sposobów udostÄ™pniania zasobów znajdziesz w dokumentacji do Samby. 66.. UUddoossttęęppnniiaanniiee ddyysskkuu ssppoodd WWiinnddoowwss mmaasszzyynnoomm zz LLiinnuuxx--eemm.. Wraz z dystrybucjÄ… Samby otrzymujemy klienta dla Unix-ów. Jego interfejs poleceÅ„ jest podobny do ftp. Możesz go używać, aby przenosić pliki miÄ™dzy Windowsowym "serwerem" a klientem Linux-owym. Aby zobaczyć jakie zasoby sa udostÄ™pnione na danym hoÅ›cie napisz: ______________________________________________________________________ /usr/sbin/smbclient -L host ______________________________________________________________________ gdzie host jest nazwÄ… maszyny, której zasoby chcesz zobaczyć. Polecenie to zwróci listÄ™ nazw serwisów - to znaczy nazw dysków lub drukarek, które może udostÄ™pnić. Serwer Samby bÄ™dzie ciÄ™ pytaÅ‚ o hasÅ‚o, o ile nie ma skonfigurowanego bezpiecznego dostÄ™pu. Np. ______________________________________________________________________ smbclient -L zimmermann ______________________________________________________________________ Polecenie to powinno wyÅ›wietlić coÅ› na ksztaÅ‚t: ______________________________________________________________________ Server time is Sat Aug 10 15:58:27 1996 Timezone is UTC+10.0 Password: Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51] Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[] Sharename Type Comment --------- ---- ------- ADMIN$ Disk Remote Admin public Disk Public C$ Disk Default share IPC$ IPC Remote IPC OReilly Printer OReilly print$ Disk Printer Drivers This machine has a browse list: Server Comment --------- ------- HOPPER Samba 1.9.15p8 KERNIGAN Samba 1.9.15p8 LOVELACE Samba 1.9.15p8 RITCHIE Samba 1.9.15p8 ZIMMERMAN ______________________________________________________________________ Browse list pokazuje inne serwery SMB udostÄ™pniajÄ…ce zasoby w sieci. Aby użyć klienta napisz: ______________________________________________________________________ /usr/sbin/smbclient serwis ______________________________________________________________________ gdzie serwis jest nazwÄ… maszyny i zasobu. Na przykÅ‚ad jeÅ›li próbujesz dostać siÄ™ do katalogu, który jest udostÄ™pniany jako public na maszynie o nazwie zimmermann, serwisem byÅ‚oby: \zimmermanublic. Chociaż z powodu powÅ‚oki w Linux-ie bÄ™dziesz musiaÅ‚ oznaczyć znaki specjalnie i polecenie ostatecznie wyglÄ…da tak: ______________________________________________________________________ usr/sbin/smbclient \\\\zimmerman\\public hasÅ‚o ______________________________________________________________________ gdzie hasÅ‚o jest Å‚aÅ„cuchem znaków bÄ™dÄ…cym twoim hasÅ‚em. Pojawi siÄ™ wtedy znak zachÄ™ty klienta Samby: ______________________________________________________________________ Server time is Sat Aug 10 15:58:44 1996 Timezone is UTC+10.0 Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51] smb: \> ______________________________________________________________________ Napisz 'h', aby uzyskać pomoc: ______________________________________________________________________ smb: \> h ls dir lcd cd pwd get mget put mput rename more mask del rm mkdir md rmdir rd prompt recurse translate lowercase print printmode queue cancel stat quit q exit newer archive tar blocksize tarmode setmode help ? ! smb: \> ______________________________________________________________________ JeÅ›li umiesz używać ftp, to nie powinieneÅ› potrzebować czytać podrÄ™cznika systemowego na temat smbclient. 77.. UUddoossttęęppnniiaanniiee ddrruukkaarrkkii LLiinnuuxx--oowweejj kkoommppuutteerroomm zz WWiinnddoowwss.. Aby udostepnić drukarkÄ™ Linux-owÄ… Windowsom musisz siÄ™ upewnić, że drukarka dziaÅ‚a dobrze pod Linux-em. JeÅ›li możesz drukować spod Linux- a to ustawienie serwera SMB dla drukarki jest bardzo proste. Przeczytaj Priniting-HOWTO na temat ustawienia drukarki pod Linux-em. Ponieważ autor używa drukarki poÅ‚Ä…czonej z Windows NT, sekcja ta nie powinna być brana za definicjÄ™, ale bardziej jako sugestia. JeÅ›li ktokolwiek ma ochotÄ™ siÄ™ podzielić szczegółami na temat innych konfiguracji proszÄ™ o kontakt, aby ta sekcja mogÅ‚a zostać skoÅ„czona: dwood@plugged.net.au. Dodaj konfiguracjÄ™ na temat drukowania do smb.conf: ______________________________________________________________________ [global] printing = bsd printcap name = /etc/printcap load printers = yes log file = /var/log/samba-log.%m lock directory = /var/lock/samba [printers] comment = Wszystkie drukarki security = server path = /var/spool/lpd/lp browseable = no printable = yes public = yes writable = no create mode = 0700 [ljet] security = server path = /var/spool/lpd/lp printer name = lp writable = yes public = yes printable = yes print command = lpr -r -h -P %p %s ______________________________________________________________________ Upewnij siÄ™, że Å›cieżka do drukarki (w tym wypadku w sekcji ]ljet[) jest taka sama jak katalog zadaÅ„ w etc/printcap. UWAGA: SÄ… pewne problemy przy udostÄ™pnianiu drukarki Unixowej przez SambÄ™ komputerom z Windows NT. Jeden problem to taki, żeby NT widziaÅ‚o poprawnie drukarkÄ™. Aby go zlikwidować przeczytaj plik docs/WinNT.txt, który jest dostarczany wraz z dystrybucjÄ…. Drugi problem to hasÅ‚a. Przeczytaj ten sam plik, aby rozwiÄ…zać ten problem. 88.. UUddoossttęęppnniiaanniiee ddrruukkaarrkkii ssppoodd WWiinnddoowwss kkoommppuutteerroomm zz LLiinnuuxx--eemm.. Aby udostÄ™pnić drukarkÄ™ spod Windows-ów musisz zrobić nastÄ™pujÄ…ce rzeczy: a) Musisz mieć poprawne pola w /etc/printcap i muszÄ… one odpowiadać lokalnej strukturze katalogów (katalog dla drukarki itp.) b) Musisz mieć skrypt /usr/bin/smbprint. Skrypt ten znajduje siÄ™ w źródÅ‚ach Samby, ale nie w każdym pakiecie binarnym. Poniżej znajduje siÄ™ trochÄ™ zmodyfikowana wersja tego skryptu. c) JeÅ›li chcesz zamieniać pliki ASCII na PostScript, musisz mieć nenscript albo jego ekwiwalent. nenscript jest konwerterem PostScript- owym i jest z reguÅ‚y instalowany w /usr/bin. d) Możesz uÅ‚atwić drukowanie poprzez SambÄ™ piszÄ…c skrypt. Poniżej podany jest prosty skrypt w Perl-u obsÅ‚ugujÄ…cy pliki ASCII, PostScript i stworzony PostScript. Poniższe pola w /etc/printcap sÄ… dla drukarki HP 5MP doÅ‚Ä…czonej do komputera z Windows NT. ______________________________________________________________________ cm - komentarz; lp - urzÄ…dzenie, na które ma być wysÅ‚any wydruk; sd - katalog zadaÅ„ dla drukarki (na lokalnym komputerze); af - katalog accounting; mx - maksymalny rozmiar pliku (0 - bez ograniczenia); if - nazwa filtru wejÅ›ciowego (skryptu). ______________________________________________________________________ WiÄ™cej informacji znajdziesz w Printing-HOWTO lub w podrÄ™czniku systemowym dla "printcap". ______________________________________________________________________ etc/printcap # # //zimmerman/oreilly przez smbprint # lp:\ cm=HP 5MP Postscript OReilly na zimmerman:\ lp=/dev/lp1:\ :sd=/var/spool/lpd/lp:\ af=/var/spool/lpd/lp/acct:\ mx#0:\ :if=/usr/bin/smbprint: ______________________________________________________________________ Upewnij siÄ™, że katalogi zadaÅ„ i accounting istniejÄ… i sÄ… zapisywalne oraz że if ma poprawnÄ… Å›cieżkÄ™ do scryptu smbprint (patrz poniżej) i że lp wskazuje poprawne urzÄ…dzenie (plik specjalny w katalogu /dev) NastÄ™pnym krokiem jest skrypt smbprint. Zwykle znajduje siÄ™ on w /usr/bin i jest przypisywany Andrew Tridgellowi - osobie, która stworzyÅ‚a SambÄ™ o ile wiem. Przychodzi on wraz z dystrybucjÄ… źródeÅ‚ Samby, ale nie ma go w dystrybucji binariów, wiÄ™c go tutaj stworzyÅ‚em. Możesz przejrzeć go dokÅ‚adniej. PrzerobiÅ‚em go trochÄ™, ponieważ przeróbki wydawaÅ‚y mi siÄ™ użyteczne. ______________________________________________________________________ #!/bin/sh # Skrypt ten jest filtrem wejÅ›ciowym do drukowania na drukarce # doÅ‚Ä…czonej do Unix-a. Używa programu smbclient do drukowania # pliku. Na przykÅ‚ad twój printcap mógÅ‚by wyglÄ…dać nastepujÄ…co: # # # smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint # # # StworzyÅ‚by on drukarkÄ™ o nazwie smb, która drukowaÅ‚aby poprzez # ten skrypt. MusiaÅ‚byÅ› stworzyć katalog zadaÅ„ /usr/spool/smb z # odpowiednimi dla twojego systemu prawami dostÄ™pu i wÅ‚aÅ›cicielem. # # Ustaw nastÄ™pujÄ…ce rzeczy na serwer i serwis przez, który chcesz # drukować. W tym przykÅ‚adzie mam PC-ta z WfWg o nazwie "lapland", # który ma drukarkÄ™ o nazwie printer bez hasÅ‚a. # # # W dalszej części skrypt zostaÅ‚ przerobiony przez hamilton@ecnz.co.nz # (Michael Hamilton, tak aby serwer, serwis i hasÅ‚o mogÅ‚y być # przeczytane z pliku /usr/var/spool/lpd/PRINTNAME/.config # # Aby to dziaÅ‚aÅ‚o /etc/printcap musi mieć pole af: # # cdcolour:\ cm=CD IBM Colorjet on 6th:\ sd=/var/spool/lpd/cdcolour:\ # :af=/var/spool/lpd/cdcolour/acct:\ if=/usr/local/etc/smbprint:\ # :mx=0:\ lp=/dev/null: # # Plik /usr/var/spool/lpd/PRINTNAME/.config powinien zawierać: # server=PC_SERVER service=PR_SHARENAME password="password" # # Np. server=PAULS_PC service=CJET_371 password="" # # Plik, do którego majÄ… byc zapisywane wiadomoÅ›ci ze Å›ledzenia; # możesz zmienić na /dev/null jeÅ›li chcesz: # logfile=/tmp/smb-print.log logfile=/dev/null # # Ostatnim parametrem do filtra jest nazwa pliku accounting. # spool_dir=/var/spool/lpd/lp config_file=$spool_dir/.config # Powinien czytać te zmienne z pliku konfiguracyjnego: serwer # serwis hasÅ‚o użytkownik eval `cat $config_file` # TrcohÄ™ pomocy, zmieÅ„ >> na > jeÅ›li chcesz zachować trochÄ™ # miejsca na dysku. # echo "server $server, service $service" >> $logfile (UWAGA Możesz dodać liniÄ™ `echo translate' jesli chcesz # automatycznego tÅ‚umaczenia CR/LF podczas drukowania. echo translate echo "print -" cat ) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $logfile ______________________________________________________________________ WiÄ™kszość dystrybucji Linux-owych posiada nenscript do zamiany dokumentów ASCII na PostScript. NastÄ™pujÄ…cy skrypt w Perl-u uÅ‚atwia życie stwarzajÄ…c prosty interfejs dla drukowania w Linux-ie przez smbprint. ______________________________________________________________________ Stosowanie: print [-a|c|p] -a drukuje jako ASCII; c drukuje sformatowane jako źródÅ‚o; -code p drukuje jako PostScript. JeÅ›li nie ma żadnej opcji, print próbuje odgadnąć typ pliku i odpowiednio go wydrukować. ______________________________________________________________________ Użycie smbprint do drukowania plików ASCII powoduje obcinanie dÅ‚ugich linii. Ten skrypt dzieli dÅ‚ugie linie w miejscu spacji (zamiast w Å›rodku sÅ‚owa) jeÅ›li jest to możliwe. Formatowanie źródÅ‚a odbywa sie przy pomocy programu nenscript. Bierze on plik ASCII i formatuje go w dwie kolumny z dodatkowym nagłówkiem (data, nazwa pliku, itp.) Zlicza także ilość linii. WzorujÄ…c siÄ™ na tym przykÅ‚adzie możesz zrobić inne typy formatowania. Dokumenty PostScript-owe sÄ… już sformatowane wiÄ™c przechodzÄ… bezpoÅ›rednio do drukarki. ______________________________________________________________________ usr/bin/perl # Skrypt: print Autorzy: Brad Marshall, David Wood # Plugged In Communications Date: 960808 # # Skrypt do drukowania na drukarce oreilly, która jest doÅ‚Ä…czona do # komputera zimmerman. Opis dziaÅ‚ania: Jako argumenty przyjmuje pliki # różnych typów i wysyÅ‚a je odpowiednio do skryptu drukujacego Samby # # Obecnie obsÅ‚ugiwane typy plików: # # ASCII - Upewnij siÄ™, że linie dÅ‚uższe niż $line_length zostaÅ‚y # podzielone w miejscu spacji. # PostScript - Nie robi nic. # Code - Formatuje na PostScript używajÄ…c "nenscript", aby wszystko # byÅ‚o odpowiednio wyÅ›wietlone (uÅ‚ożenie, czcionki, itd.) # # # Ustaw maksymalnÄ… ilość znaków w linii dla plików ASCII. line_length $= 76; # Ustaw Å›cieżkÄ™ i nazwÄ™ skryptu drukujÄ…cego Samby print_prog = $"/usr/bin/smbprint"; # Ustaw Å›cieżkÄ™ i nazwÄ™ "nenscript-u" (zamiana ASCII-->PostScript) $nenscript = "/usr/bin/nenscript"; unless ( -f $print_prog ) { die "Can't find $print_prog!"; } unless ( -f $nenscript ) { die "Can't find $nenscript!"; } &ParseCmdLine(@ARGV); # DBG print "filetype is $filetype\n"; if ($filetype eq "ASCII") { ero;wrap($line_length); elsif ($filetype eq &"code") { } ero;codeformat; elsif ($filetype eq "ps") { &createarray; else { } print "Sorry..no known &file type.\n"; exit } 0; } # WyÅ›lij tablcÄ™ do smbprint open(PRINTER, "|$print_prog") || die "Can't open $print_prog: $!\n"; foreach $line (@newlines) { print PRINTER $line; } # WyÅ›lij dodatkowy znak LF jeÅ›li plik ma niekompletnÄ… ostatniÄ… liniÄ™. print PRINTER "\n"; close(PRINTER); print "Completed\n"; exit 0; # --------------------------------------------------- # # Wszystko poniżej jest procedurÄ… # # --------------------------------------------------- # sub ParseCmdLine { Interpretuje wiersz poleceÅ„, szukajÄ…c jakiego typu jest # plik # Gets $arg and $file to be the arguments (if they exists) and the # filename if ($#_ < 0) { ero;usage; } # DBG foreach $element (@_) { print "*$element* \n"; # } $arg = shift(@_); if ($arg =~ /\-./) { cmd = $arg; DBG print "\$cmd found.\n"; $file = shift(@_); else { file = $arg; } # Definiowanie typu pliku dopóki ($cmd) { Nie mamy argumentów if ($file =~ /\.ps$/) { filetype = "ps"; elsif ($file =~ $/\.java$|\.c$|\.h$|\.pl$|\.sh$|\.csh$|\.m4$|\.inc$|\.html$|\.htm$/) ${ filetype = "code"; else { filetype = "ASCII"; } # Przerób $file odpowiednio do jego typu i zwróć $filetype } else { Mamy typ pliku w $arg if ($cmd =~ /^-p$/) { filetype = "ps"; elsif ($cmd =~ $/^-c$/) { filetype } = "code"; elsif ($cmd =~ $/^-a$/) { } filetype = "ASCII" } } } sub usage { print " Stosowanie: print [-a|c|p] -a drukuje jako ASCII c drukuje sformatowany jako źródÅ‚o -code p drukuje jako PostScript JeÅ›li nie ma żadnej opcji, print próbuje odgadnąć typ pliku i odpowiednio go wydrukować.\n "; exit(0); } sub wrap { Stwórz tablicÄ™ linii w pliku, gdzie każda linia jest krótsza od # podanej iloÅ›ci znaków i jest podzielona tylko w miejscach spacji # Pobierz ilość znaków jaka może być w linii. limit = $pop(@_); # DBG print "Entering subroutine wrap\n"; print "The line length #limit is $limit\n"; # Wczytaj plik, sformatuj i umieść w tablicy. open(FILE, "<$file") || die "Can't open $file: $!\n"; while() { $line = $_; # DBG print "The line is:\n$line\n"; # Podziel liniÄ™ jeÅ›li jest dÅ‚uższa niż podana ilość znaków. while ( length($line) > $limit ) { # DBG print "Wrapping..."; # Pobierz pierwsze $limit+1 znaków. part = $substr($line,0,$limit +1); # DBG print "The partial line is:\n$part\n"; # Sprawdź czy ostatni znak jest spacjÄ…. $last_char = substr($part,-1, 1); if ( " " eq $last_char ) { JeÅ›li tak, wydrukuj resztÄ™. # DBG print "The last character was a space\n"; substr($line,0,$limit + 1) = ""; substr($part,-1,1) = ""; push(@newlines,"$part\n"); } else { JeÅ›li nie, znajdź ostatniÄ… spacjÄ™ w # pod-linii i drukuj do niej # DBG print "The last character was not a #space\n"; # UsuÅ„ znaki dalsze niż $limit substr($part,-1,1) = ""; Odwróć liniÄ™ # aby uÅ‚atwić odnajdywanie ostatniej spacji $revpart = reverse($part); $index = index($revpart," "); if ( $index > 0 ) { substr($line,0,$limit-$index) = ""; push(@newlines,substr($part,0,$limit-$index) . "\n"); else { Nie byÅ‚o spacji w linii } wiÄ™c # wydrukuj do $limit. substr($line,0,$limit) = ""; push(@newlines,substr($part,0,$limit) . "\n"); } } } push(@newlines,$line); } close(FILE); } sub codeformat { WywoÅ‚aj procedurÄ™ wrap i przefiltruj przez nenscript &wrap($line_length); # Przepuść wynik przez nenscript, aby utworzyć plik PostScript, # który pasuje do jakiegoÅ› przyzwoitego formatu źródeÅ‚ do drukowania # (uÅ‚ożenie, czcionki Courier, ilość linii). Najpierw wydrukuj to do # pliku tymczasowego. $tmpfile = "/tmp/nenscript$$"; open(FILE, "|$nenscript -2G -i$file -N -p$tmpfile -r") || die "Can't open nenscript: $!\n"; foreach $line (@newlines) { print FILE $line; } close(FILE); # Wczytaj plik tymczasowy spowrotem do tablicy, tak aby mógÅ‚ być # wysÅ‚any do skryptu print Samby. @newlines = (""); open(FILE, "<$tmpfile") || die "Can't open $file: $!\n"; while() { push(@newlines,$_); } close(FILE); system("rm $tmpfile"); } sub createarray { Stwórz tablicÄ™ dla PostScript-u open(FILE, "<$file") || # die "Can't open $file: $!\n"; while() { push(@newlines,$_); } close(FILE); } ______________________________________________________________________ 99.. PPrraawwaa aauuttoorrsskkiiee ii ZZaakkooÅ„Å„cczzeenniiee.. 99..11.. PPrraawwaa aauuttoorrsskkiiee.. Dokument ten jest chroniony prawami autorskimi Davida Wooda 1996. Może on być reprodukowany w każdej formie i dystrybuowany bez ograniczeÅ„ tak dÅ‚ugo jak nie zmieni siÄ™ jego zawartość i zawarte jest w nim to stwierdzenie. 99..22.. PPooddzziięękkoowwaanniiaa.. JeÅ›li tylko przyÅ›lesz mi jakieÅ› sugestie, umieszczÄ™ ciÄ™ tutaj w nastÄ™pnej wersji. 99..33.. OOdd ttÅ‚Å‚uummaacczzaa.. TÅ‚umaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. JeÅ›li znalazÅ‚eÅ› jakieÅ› rażące bÅ‚Ä™dy ortograficzne, gramatyczne, skÅ‚adniowe, techniczne to pisz do mnie: B.Maruszewski@zsmeie.torun.pl OficjalnÄ… stronÄ… tÅ‚umaczeÅ„ HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przetÅ‚umaczonych dokumentów znajdujÄ… siÄ™ na tejże stronie. DostÄ™pne sÄ… także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/. PrzetÅ‚umaczone przeze mnie dokumenty znajdujÄ… siÄ™ także na mojej stronie WWW. SÄ… tam też odwoÅ‚ania do Polskiej Strony TÅ‚umaczeniowej. Kontakt z naszÄ… grupÄ…, grupÄ… tÅ‚umaczy możesz uzyskać poprzez listÄ™ dyskusyjnÄ… jtz@ippt.gov.pl. JeÅ›li chcesz sie na niÄ… zapisać, to wyÅ›lij list o treÅ›ci subscribe jtz ImiÄ™ Nazwisko na adres listproc@ippt.gov.pl

Wyszukiwarka

Podobne podstrony:
SMB HOWTO pl 2 (2)
SMB HOWTO pl 6 (2)
SMB HOWTO pl 10 (2)
SMB HOWTO pl 5 (2)
SMB HOWTO pl 12 (2)
SMB HOWTO pl 3 (2)
SMB HOWTO pl 8 (2)
SMB HOWTO pl 4 (2)
SMB HOWTO pl 4 (2)
SMB HOWTO pl 1 (2)
SMB HOWTO pl 7 (2)
SMB HOWTO pl (3)
SMB HOWTO pl 11 (2)
SMB HOWTO pl 9 (2)
bootdisk howto pl 8
PPP HOWTO pl 6 (2)
NIS HOWTO pl 1 (2)
cdrom howto pl 1

więcej podobnych podstron