SMB-Howto

Autor:David Wood, dwood@plugged.net.au v1.1, 25 Marca 1999
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.2, 18 Sierpnia 1999


Jest to dokument z serii HOWTO (Jak To Zrobi�). Opisuje on jak u�ywa� Server Message Protocol (SMB), zwanego te� Session Message Block, NetBIOS lub LanManager w Linuksie. Dokument ten zosta� napisany w standardzie ISO-8859-2. Orygina� mo�na znale�� pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO.

1. Wprowadzenie.

Jest to dokument z serii HOWTO (Jak To Zrobi�). Opisuje on jak u�ywa� w Linuksie Server Message Protocol, zwanego te� Session Message Block, NetBIOS lub LanManager. Dokument ten skupia si� na Linuksie, jednak Samba dzia�a na wi�kszo�ci system�w uniksowych.

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.

O wiele wi�cej dokumentacji znajduje si� na stronie WWW Samby pod adresem www.samba.org. Mo�esz tak�e korzysta� z grupy dyskusyjnej comp.protocols.smb lub polskoj�zycznej pl.comp.os.linux.sieci.

Protok� SMB u�ywany jest przez Microsoft Windows 3.11, NT i 95/98 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. Przy pomocy narz�dzi smbfs autorstwa Paal-Kr. Engstad (pke@engstad.ingok.hitos.no), Volker Lendecke (lendecke@namu01.gwdg.de) maszyny uniksowe mog� montowa� zasoby udost�pniane z Windows.

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.

Zrzeczenie. 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.

Aby maszyny z systemami Windows 3.x mog�y korzysta� z SMB musz� mie� zainstalowany stos TCP/IP i DLL Win32. Oba te pakiety s� dost�pne na stronie WWW Microsoftu ( www.microsoft.com).

2. Dalsze informacje.

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:

3. Instalacja.

Po pierwsz, aby u�ywa� Samby wszystkie twoje maszyny musz� byc w jednym segmencie sieci lokalnej i korzysta� z protoko�u TCP/IP. Samba nie b�dzie dzia�a� na innych protoko�ach. Jest to �atwe do osi�gni�cia poniewa� Linux i Windows 95/98/NT s� dostarczane z tym protoko�em. Jednak je�li u�ywasz Windows 3.x, to b�dziesz musia� doda� obs�ug� tego protoko�u.

Z us�ug SMB nie mo�na korzysta� poprzez routery. Je�li chcesz takie co� zrobi�, to musisz ustawi� tunel IP, co jest poza tematyk� tego HOWTO.

Naj�wie�sze �r�d�a Samby dost�pne s� pod adresem ftp.icm.edu.pl w katalogu /pub/samba. Oryginalny adres to ftp.samba.org.

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)

Zauwa�, �e serwis nazw oferowany przez demona nmbd r�ni si� od tego oferowanego przez DNS (serwis nazw domen). Serwis nazw NetBIOS, to serwis nazw w stylu Windows u�ywany do SMB. Innymi s�owy, to �e masz DNS nie oznacza, �e Samba b�dzie umia�a odczytywa� nazwy komputer�w.

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)

Binaria do obs�ugi systemu plik�w (smbfs) om�wione s� w dalszej cz�ci dokumentu.

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. OSTRO�NIE !!! 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

4. Uruchamianie demon�w.

Dwoma demonami SMB s�: /usr/sbin/smbd i /usr/sbin/nmbd.

Mo�esz je uruchomi� przez demona inetd lub jako osobne procesy. Samba b�dzie odpowiada� troch� szybciej je�li jest uruchomiona jako osobny demon ni� z inetd.

W obu przypadkach powiniene� sprawdzi� czy w pliku /etc/services znajduj� si� takie linie:


       netbios-ns      137/tcp         nbns
       netbios-ns      137/udp         nbns
       netbios-dgm     138/tcp         nbdgm
       netbios-dgm     138/udp         nbdgm
       netbios-ssn     139/tcp         nbssn

Upewnij si�, �e wszystkie s� odkomentowane. W zale�no�ci od dystrybucji, mo�liwe, �e b�dziesz musia� je doda�. Samba nie b�dzie w stanie dowi�za� si� do odpowiednich port�w je�li w tym pliku nie znajd� si� powy�sze linie.

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 `cat /var/run/inetd.pid`

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

Je�li podczas startu Samby pojawi si� b��d m�wi�cy co� o niemo�no�ci dowi�zania si� do portu 139, to prawdpodobnie jest inny proces Samby jeszcz dzia��j�cy. Sprawd� list� proces�w (poleceniem 'ps auxww | grep mbd'), �eby zobaczy� czy to prawda.

5. Og�lna konfiguracja. (/etc/smb.conf)

Konfiguracja Samby na Uniksie 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

Po stworzeniu nowego pliku smb.conf dobrze jest zweryfikowa� czy jest poprawny. Mo�na to zrobi� przy pomocy programu testparm (informacje o nim znajdziesz na stronie podr�cznika systemowego). Je�li program ten nie zg�osi �adnych b��d�w, to smbd poprawnie za�aduje ten plik.

Oto pewien trick: Je�li tw�j serwer Samba ma wi�cej ni� jeden interfejs ethernetowy, smbd mo�e do��czy� si� do z�ego. Je�li tak si� stanie, to mo�esz zmusi� smbd do dowi�zania si� do dobrego przez dodanie do sekcji [global] poni�szej linii:


interfaces = 192.168.1.1/24

Uwaga: Liczba po znaku '/' odnosi si� do maski podsieci. "24" to warto�� jak� nale�y u�y� dla niepodzielonej klasy C. Wi�cej informacji okalkulacjach dotycz�cych podsieci znajdziesz pod adresem www.ziplink.net/~ralphb/IPSubnet/index.html.

Dost�pne jest graficzne narz�dzie konfiguracyjne do Samby: GtkSamba. Zerknij pod adres www.open-systems.com/gtksamba.html.

6. Udost�pnianie dysku Linuksowego komputerom z Windows.

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 = no

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

Kiedy� by�o to bardzo proste: po prostu startowa�e� Samb� i zasoby mo�na by�o przegl�da� z Windows na PC. Jednak Microsoft ostatnio troch� utrudni� �ycie korzystaj�cym z Samby. Systemy Windows 98, Windows NT (z service pack 3 i nowszym) i ostatnie Windows 95 u�ywaj� teraz standardowo kodowanych hase�. Samba natomiast korzysta domy�lnie z niekodowanych hase�. Nie mo�na przegl�da� zasob�w je�li albo klient albo serwer u�ywa kodowanych hase� poniewa� nie mo�na po��czy� si� anonimowo.

Je�li taki w�a�nie konflikt wyst�puje u ciebie, to podczas pr�by po��czenia si� z zasobem powiniene� zobaczy� okienko z komunikatem: "You are not authorized to access that account from this machine".

Mo�esz skonfigurowa� albo Samb� do u�ywania zakodowanych hase�, albo Windows do u�ywani niekodowanych hase�.

Konfigurowanie Windows do u�ywania kodowanych hase� Samby:

Windows 95/98

U�ywaj�c edytora rejestr�w (regedit) stw�rz takie ustawienie: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP dodaj now� warto�� DWORD: Value name: EnablePlainTextPassword Data: 0x01.

Windows NT

U�ywaj�c edytora rejestr�w (regedit) stw�rz takie ustawienie: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters, dodaj now� warto�� DWORD: Value Name: EnablePlainTextPassword Data: 0x01.

Kiedy te zmiany zostan� zrobione, zresetuj komputer z Windows i spr�buj pod��czy� si� do jakiego� zasobu z Samby. Powinno to dzia�a� o ile serwere Samby u�ywa niekodowanych hase�

Konfigurowanie Samby do u�ywania hase� kodowanych:

W sekcji [global] w pliku /etc/smb.conf dodaj nast�puj�ce linie:


       encrypt passwords = yes
       smb passwd file = /etc/smbpasswd

Zanim to zrobisz zach�cam mocno do przeczytania plik�w ENCRYPTION.txt, Win95.txt i WinNT.txt w dokumentacji do Samby.

Je�li twoi klienci i serwer u�ywaj� kodowanych hase� nie b�dziesz m�g� przegl�da� zasob�w serwera zanim nie zostanie zainicjowane pierwsze po��czenie z poprawn� autentykacj�. Aby to uczyni� wpisz r�cznie nazw� zasobu w Mened�erze Plik�w lub Eksplorerze w postaci \\<nazwa serwera>\<nazwa zasobu>. Zaloguj si� z poprawnym loginem i has�em na tym serwerze.

Je�li podejrzewasz, �e serwis nazwa NetBIOS jest �le skonfigurowany (mo�e dlatego, �e pojawiaj� si� b��dy "host not found" podczas po��czenia), to spr�buj u�y� tylko adresu IP serwera \\<IP serwera>\<nazwa zasobu>.

�eby nazwy plik�w pojawia�y si� poprawnie mo�liwe, �e musisz doda� kilka ustawie� do odpowiedniej sekcji zasobu. Poni�sze dzia�a poprawnie dla Windows 95/98/NT, ale mo�liwe, �e trzeba te ustawienia zmodyfikowa� w przypadku Windows 3.x:


      ; Mangle case = yes zdaje si� podawa� poprawne nazwy
      ; dla Win 95/98
      mangle case = yes

      ; Czy rozr�nia� du�e i ma�e litery
      case sensitive = no

      ; Domy�lna wielko�� liter przy tworzeniu plik�w
      default case = lower

      ; Zachowaj ustawienia dot. liter dla wszystkich plik�w
      preserve case = yes

      ; Zachowaj ustawienia dor. liter dla nazwa dos-owych (8.3)
      short preserve case = no

Wi�cej informacji na temat r�nych sposob�w udost�pniania zasob�w znajdziesz w dokumentacji do Samby. Mo�liwo�ci konfiguracji Samby s� o wiele wi�ksze ni� pokazane tutaj. Na pocz�tek jednak wystarczy. Je�li chcesz zrobi� co� bardziej zaawansowanego, to zajrzyj na wspomnian� wcze�niej stron� WWW Samby.

7. Udost�pnianie dysku spod Windows maszynom z Linux-em.

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 <has�o>

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: \\zimmerman\public. 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.

smbclient mo�e by� dobry do testowania jednak szybko mo�e si� znudzi� w codziennej pracy. B�dziesz pewnie chcia� u�ywa� pakietu smbfs. Zawarte s� tam dwa proste narz�dzia: smbmount i smbumount. Dzia�aj� dok�adnie tak samo jak linuksowe polecenia mount i umount z tym, �e operuj� na zasobach SMB.

Pakiet smbfs jest zawarty w wi�kszo�ci dystrybucji Linuksa. Jedna wa�na uwaga: Musisz mie� wkompilowan� w j�dro obs�ug� systemu plik�w SMB (smbfs), aby m�c u�ywa� tych narz�dzi!

8. Udost�pnianie drukarki Linux-owej komputerom z Windows.

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 (bardzo dawno temu - zanim nasza sie� zosta�a ca�kiem przeniesiona na Linuksa), 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.

Linie:


     printcap name = /etc/printcap
     load printers = yes

decyduj� czy wszystkie drukarki zdefiniowane w /etc/printcap powinny by� za�adowane. Je�li to zrobisz, to nie ma sensu konfigurowa� drukarek indywidualnie. Sekcja [printers] okre�la ustawienia dla drukarek, kt�re chcesz wyra�nie zdefiniowa�. Je�li tw�j system drukowania nie dzia�a w ten spos�b (BSD), to musisz skonfigurowa� fa�szywy plik konfiguracyjny dla drukarek (albo u�y� techniki z poleceniem 'print'; zobacz dalej). Wi�cej informacji na temat drukowania znajdziesz w Printing-HOWTO.

Po�yteczn� technik� testowania po��czenia sieciowego jest zmiana polecenia print na:


     print command = cp %S /tmp/print.%P.%S

Mo�na potem przeanalizowa� plik wynikowy.

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.

Oleg L. Machulskiy (machulsk@shade.msu.ru) proponuje, �e lepszym poleceniem by�oby:


       print command = smb2ps %s | lpr -r -h -P %p

gdzie smb2ps to skrypt zamieniaj�cy plik otrzymany z Windows na bardziej u�yteczny PostScript. Musi on odci�� pierwsze 3 linie i ostatnie dwie poniewa� te linie zawieraj� pewne kody PJL lub PCL.

Takie podej�cie jest potrzbne tylko wtedy je�li Windows u ciebie drukuje PCL a nie prawdziwy PostScript. Dowiedzia�em si�, �e Windows 95/98/NT nie posiadaj� same z siebie sterownika do PostScriptu, ale sterownik "Digital turbo Printserver 20" jest dobrym zamiennikiem takiego w wi�kszo�ci przypadk�w. S�ysza�em tak�e, �e sterownik "Apple LaserWriter II NTX" dzia�a dobrze.

Jeff Stern (jstern@eclectic.ss.uci.edu) zg�osi� co� takiego, co mo�e niekt�rym z was pom�c:

--------------------------%<----------------------------------

M�j problem polega� na tym, �e mog�em drukowa� na drukarce z samego Linuksa, ale nie mog�em drukowa� na niej z Windows 95. Kiedy pr�bowa�em polecenia smbclient \\eclectic\belen -P i potem pr�bowa�em wydrukowa� plik pojawia�y si� komunikaty o braku dost�pu (access denied). Tak wi�c ustawi�em dla katalogu /var/spool/lpd/lp1 atrybuty 777. Przykro mi, ale musia�em to zrobi�. Mog�em te� wszystkich u�ytkowik�w zapisa� do grupy 'lp' i ustawi� takie prawa dla tej grupy, albo zmieni� w�a�ciciela grupowego katalogu na 'users' ... . Ale jak na razie to dzia�a z prawami root:lp 777.

Inn� rzecz� jak� administratorzy musz� wiedzie�, to fakt, �e nazwa konta,z kt�rego u�ytkownik pr�buje drukowa� z Windows, musi istnie� tak�e na Linuksie. I tak: je�li na Windows jest u�ytkownik 'joe', ti na Linuksie musi by� te� u�ytkownik 'joe'. Has�o logowania u�ytkownika 'joe' b�dzie has�em dost�pu do drukarki na Linuksie. U�ytkownik b�dzie zapytano o to has�o podczas dodawania drukarki sieciowej do swojego komputera.

My�la�em, �e to nie b�dzie problemem u mnie, bo ustawi�em swoj� drukark� jako 'public' (og�lnie dost�pn�) w /etc/smb.conf. Ale jednak wci�� jest pytanie o has�o. Windows nie daje niestety mo�liwo�ci podania innego loginu dla drukarki zdalnej. U�ywa po prostu tego, kt�rym zalogowa�e� si� do Windows.

--------------------------%<----------------------------------

Dr. Michael Langner (langner@fiz-chemie.de) wskazuje, �e problemu z prawami dost�pu dla katalogu /var/spool/lpd/ mo�na unikn�� przez u�ycie takich ustawie�:


path = /tmp
print command = lpr -r -P%p %s

Czasami pojawi si� b��d podczas przetwarzania PostScriptu z Windows, kt�ry powoduje wydrukowanie dodatkowej strony na ko�cu ka�dego zadania. Na pocz�tku ka�dej takiej strony znajduje si� ''"%%[ Lastpage ]%%". Zdarza si� to tylko w Windows 95/98 i spowodowane jest b��dami w PostScripcie.

Jednym ze sposob�w, aby sobie z tym poradzi� jest u�ycie skryptu usuwaj�cego ten kawa�ek z�ego PostScriptu z zadania wydruku. Innym sposobem jest znalezienie lepszego sterownika do PostScriptu do Windows. Najlepszym sposobem jest prawdopodobnie u�ycie LPRng zamiast PostScriptu do drukowania na serwerze Samby.

Erik Ratcliffe (erik@caldera.com) z Caldery powiedzia� mi, �e u�ywanie LPRng oznacza, �e na maszynach z Windows mo�e byc u�yty ka�dy sterownik. Na serwerze Samby, u�ywali oni takiego pliku /etc/printcap:


       raw:\
               :rw:sh:
               :lp=/dev/lp1
               :sd=/var/spool/lpd/raw
               :fx=flp

LPRng nie wyamaga znak�w ':\' na ko�cu ka�dej linii. Wci�� potrzebna jest pozycja dotycz�ca drukarek w pliku /etc/smb.conf. Polecenie 'print' musi u�ywa� drukarki zdefiniowanej jako "raw" w /etc/printcap i dane musz� by� wysy�ane do tej drukarki binarnie. Spr�buj u�yc poni�szej linii:


       print command = lpr -b -Praw %s

Mo�liwe te�, �e b�dziesz musia� skonfigurowa� kolejkowanie na Windows 95, tak �eby wysy�a� wydruki bezpo�rednio do drukarki zamiast je kolejkowa�.

9. Udost�pnianie drukarki spod Windows komputerom z Linux-em.

Aby udost�pni� drukark� spod Windows-�w musisz zrobi� nast�puj�ce rzeczy:

  1. Musisz mie� poprawne pola w /etc/printcap i musz� one odpowiada� lokalnej strukturze katalog�w (katalog dla drukarki itp.)
  2. 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.
  3. 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.
  4. 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.
  5. M�g�bys te� u�y� MagicFilter do powy�szych zada�. Szczeg�y na temat konfiguracji tego filtru s� podane za skryptem w perlu. Zalet� tego filtru jest znajomo�� wielu format�w plik�w i umiej�tno�� ich konwersji.

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 zliczania (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] <nazwa_pliku>
     -a drukuje <nazwa_pliku> jako ASCII; c drukuje <nazwa_pliku>
     sformatowane jako �r�d�o; -code p drukuje <nazwa_pliku> 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] <plik>
       -a drukuje <plik> jako ASCII c drukuje <plik> sformatowany jako
         �r�d�o
       -code p drukuje <plik> 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(<FILE>) {
                $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(<FILE>) {
                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(<FILE>) {
                push(@newlines,$_);
        }
        close(FILE);
}

Teraz spos�b z MagicFilter. Dzi�kuj� za t� informacj� Alberto Menegazzi ( flash.egon@iol.it).

Alberto pisze:

--------------------------%<----------------------------------

1) Zainstaluj MagicFilter dla odpowiednich drukarek w /usr/bin/local/, ale nie umieszczaj w /etc/printcap tego co sugeruje dokumentacja do tego filtru.

2) Utw�rz plik /etc/printcap na podobie�stwo tego poni�ej (to jest konfiguracja dla mojej drukarki LaserJet 4L):


lp|ljet4l:\
        :cm=HP LaserJet 4L:\
        :lp=/dev/null:\                         # or /dev/lp1
        :sd=/var/spool/lpd/ljet4l:\
        :af=/var/spool/lpd/ljet4l/acct:\
        :sh:mx#0:\
        :if=/usr/local/bin/main-filter:

Powiniene� wiedzie�, �e lp=/dev/... otwierane jest z lokowaniem, tak wi�c powinny by� u�ywane virtualne urz�dzenia; jedno dla ka�dej odleg�ej drukarki.

Np. stworzone przez 'touch /dev/ljet4l'.

3) Stw�rz filtr /usr/local/bin/main-filter jak poni�ej:


#! /bin/sh
logfile=/var/log/smb-print.log
spool_dir=/var/spool/lpd/ljet4l
(
  echo "print -"
    /usr/local/bin/ljet4l-filter
) | /usr/bin/smbclient "\\\\SHIR\\HPLJ4" -N -P >> $logfile

P.S. Oto cytat z mini-HOWTO Print2Win na temat lokowania i po co tworzy� wirtaulne drukarki.

---Pocz�tek cytatu

Wskaz�wka od Ricka Bresslera:

Dobra rada. Ja u�ywam czego� bardzo podobnego. Jedna pomocna wskaz�wka, to poni�ej nie jest dobrym pomys�em:


        :lp=/dev/null:\

lpr otwiera plik podany w ustawieniu lp= na wy��czno��. Robi tak, �eby zapobiec zapisywaniu przez wiele proces�w do tej samej drukarki w tym samym czasie.

Ubocznym efektem tego jest, �e w twoim przypadku 'eng' i 'colour' nie mog� drukowa� w tym samym czasie (zwykle mniej lub bardziej przezroczyste, poniewa� b�d� raczej drukowa�y szybko no i jest te� kolejka. Tak �e nie powiniene� niczego zauwa�y�). Ale ka�dy inny proces, kt�ry spr�buje zapisa� do /dev/null przerwie dzia�anie.

W systemie jednou�ytkownikowym nie jest to problem. Ja mam system z 50. drukarkami - i tam by�by to problem.

Rozwi�zaniem jest stworzenie fa�szywej drukarki dla ka�dej. Np. 'touch /dev/eng'.

Zmodyfikowa�em pola w pliku /etc/printcap powy�ej i wzi��em pod uwag� sugestie Ricka. Wykona�em te dwa polecenia:


#touch /dev/eng
#touch /dev/colour

---Koniec cytatu

--------------------------%<----------------------------------

10. Tworzenie kopii zapasowej komputer�w z Windows na Linuksie.

Adam Neat ( adamneat@ipax.com.au) uprzejmie poda� nast�puj�cy skrypt, s�u��cy do robienia kopii zapasowych Windows�w na Linuksie przy pomocy narz�dzia smbclient. Adam twierdzi, �e u�ywa go do robienia kopii zapasowych Windows 3.x i NT na Linuksie na nap�dzie DAT SCSI.

Adam nie jest dumny ze stylu kodowania, ale to dzia�a. Jak ja to lubi� m�wi�: "Je�li dzia�a i jest g�upie, to nie jest g�upie".

W skrypcie tym agnea1 jest nazw� u�ytkownika na Linuksie, kt�ry robi kopie.


#!/bin/bash

clear
echo Initialising ...
checkdate=`date | awk '{print $1}'`

if [ -f "~agnea1/backup-dir/backup-data" ]; then

        echo "ERROR: No config file for today!"
        echo "FATAL!"
        exit 1
fi

if [ -d "~agnea1/backup-dir/temp" ]; then

        echo "ERROR: No tempoary directory found!"
        echo
        echo "Attempting to create"
        cd ~agnea1
        cd backup-dir
        mkdir temp
        echo "Directory Made - temp"
fi

if [ "$1" = "" ]; then

        echo "ERROR: enter in a machine name (ie: cdwriter)"
        exit 1
fi

if [ "$2" = "" ]; then

        echo "ERROR: enter in a SMB (Lan Manager) Resource (ie: work)"
        exit 1
fi

if [ "$3" = "" ]; then

        echo "ERROR: enter in an IP address for $1 (ie:
        130.xxx.xxx.52)" exit 1
fi

#############################################################################
# Main Section
#
#############################################################################

cd ~agnea1/backup-dir/temp
rm -r ~agnea1/backup-dir/temp/*
cd ~agnea1/backup-dir/

case "$checkdate"
in
        Mon)
                echo "Backuping for Monday"
                cat backup-data | /usr/local/samba/bin/smbclient
                \\\\$1\\$2 -I$3 -N echo "Complete"

                        if [ -d "~agnea1/backup-dir/Monday" ]; then
                                echo "Directory Monday Not found ...
                                making" mkdir
                                ~agnea1/backup-dir/Monday
                        fi

                echo "Archiving ..."
                cd ~agnea1/backup-dir/temp
                tar -cf monday.tar *                echo "done ..."
                rm ~agnea1/backup-dir/Monday/monday.tar
                mv monday.tar ~agnea1/backup-dir/Monday
                ;;


        Tue)
                echo "Backuping for Tuesday"
                cat backup-data | /usr/local/samba/bin/smbclient
                \\\\$1\\$2 -I$3 -N echo "Complete"

                        if [ -d "~agnea1/backup-dir/Tuesday" ]; then
                                echo "Directory Tuesday Not found ...
                                making" mkdir
                                ~agnea1/backup-dir/Tuesday
                        fi
                echo "Archiving ..."
                cd ~agnea1/backup-dir/temp
                tar -cf tuesday.tar *
                echo "done ..."
                rm ~agnea1/backup-dir/Tuesday/tuesday.tar
                mv tuesday.tar ~agnea1/backup-dir/Tuesday
                ;;

        Wed)
                echo "Backuping for Wednesday"
                cat backup-data | /usr/local/samba/bin/smbclient
                \\\\$1\\$2 -I$3 -N echo "Complete"

                        if [ -d "~agnea1/backup-dir/Wednesday" ]; then
                                echo "Directory Wednesday Not found
                                ... making" mkdir
                                ~agnea1/backup-dir/Wednesday
                        fi
                echo "Archiving ..."
                cd ~agnea1/backup-dir/temp
                tar -cf wednesday.tar *
                echo "done ..."
             rm ~agnea1/backup-dir/Wednesday/wednesday.tar
                mv wednesday.tar ~agnea1/backup-dir/Wednesday
                ;;

        Thu)
                echo "Backuping for Thrusday"
                cat backup-data | /usr/local/samba/bin/smbclient
                \\\\$1\\$2 -I$3 -N echo "Complete"

                        if [ -d "~agnea1/backup-dir/Thursday" ]; then
                                echo "Directory Thrusday Not found ...
                                making" mkdir
                                ~agnea1/backup-dir/Thursday
                        fi
                echo "Archiving ..."
                cd ~agnea1/backup-dir/temp
                tar -cf thursday.tar *
                echo "done ..."
                rm ~agnea1/backup-dir/Thursday/thursday.tar
                mv thursday.tar ~agnea1/backup-dir/Thursday
                ;;


        Fri)
                echo "Backuping for Friday"
                cat backup-data | /usr/local/samba/bin/smbclient
                \\\\$1\\$2 -I$3 -N echo "Complete"

                        if [ -d "~agnea1/backup-dir/Friday" ]; then
                                echo "Directory Friday Not found ...
                                making" mkdir
                                ~agnea1/backup-dir/Friday
                        fi
                echo "Archiving ..."
                cd ~agnea1/backup-dir/temp
                tar -cf friday.tar *
                echo "done ..."
                rm ~agnea1/backup-dir/Friday/friday.tar
                mv friday.tar ~agnea1/backup-dir/Friday
                ;;

        *)
                echo "FATAL ERROR: Unknown variable passed for day"
                exit 1;;

esac
###########

11. Prawa autorskie.

Prawa autorskie tego HOWTO nale�� do Davida Wooda © 1996-1999, Mo�na je reprodukowa� w ka�dej postaci oraz dystrybuowa� bez ogranicze� tak d�ugo jak d�ugo nie b�dzie zmieniana jego zawarto�� w��cznie z tym stwierdzeniem.

12. Podzi�kowania.

Brad Marshall ( bmarshall@plugged.net.au) and Jason Parker ( jparker@plugged.net.au) dostarczyli czasu, cierpliwo�ci, troch� skrypt�w i bada�.

Adam Neat ( adamneat@ipax.com.au) dostarczy� skrypt w bashu do robienia kopii zapasowych Windows na Linuksie.

Matthew Flint ( matthew@philtrum.demon.co.uk) powiedzia� mi o ustawienia interfaces w smb.conf.

Oleg L. Machulskiy ( machulsk@shade.msu.ru), Jeff Stern ( jstern@eclectic.ss.uci.edu), Dr. Michael Langner ( langner@fiz-chemie.de i Erik Ratcliffe ( erik@caldera.com) zasugerowali modyfikacje w rozdziale na temat udost�pniania drukarki na Linuksie maszynom z Windows.

Alberto Menegazzi ( flash.egon@iol.it) dostarczy� konfiguracj� MagicFilter.

Andrea Girotto ( icarus@inca.dei.unipd.it) dostarczy� wielu warto�ciowych sugestii na temat ca�ego dokumentu.

Dzi�ki tak�e wszystki mi�dzynarodowym t�umaczom, kt�rzy umo�liwili czytanie tego HOWTO ludziom nie znaj�cym angielskiego: Takeo Nakano ( nakano@apm.seikei.ac.jp), Klaus-Dieter Schumacher ( Klaus-Dieter.Schumacher@fernuni-hagen.de), Andrea Girotto ( icarus@inca.dei.unipd.it) i wielu innym, z kt�rymi nie mam kontaktu.

12.1 Od t�umacza.

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@jtz.org.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.jtz.org.pl w katalogu /HOWTO/.

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 majordomo@ippt.gov.pl

Hosting by: Hurra Communications Sp. z o.o.
Generated: 2007-01-26 18:02:24