1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817
|
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 uywa
Session Message Protocol, zwanego te NetBIOS lub LanManager z Linux-
em. Dokument ten zosta napisany w standardzie ISO-8859-2. Orygina
mona 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 demonw.
4. Oglna konfiguracja. (/etc/smb.conf)
5. Udostpnianie dysku Linux-owego komputerom z Windows.
6. Udostpnianie dysku spod Windows maszynom z Linux-em.
7. Udostpnianie drukarki Linux-owej komputerom z Windows.
8. Udostpnianie drukarki spod Windows komputerom z Linux-em.
9. Prawa autorskie i Zakoczenie.
9.1. Prawa autorskie.
9.2. Podzikowania.
9.3. Od tumacza.
______________________________________________________________________
11.. WWpprroowwaaddzzeenniiee..
Jest to dokument z serii HOWTO (Jak To Zrobi). Opisuje on jak uywa
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 przesane do mnie,
aby je pniej umieci w nastpnej wersji.
Protok SMB uywany jest przez Microsoft Windows 3.11, NT i 95 aby
wspdzieli zasoby dyskowe i drukarki. Maszyny Unix-owe (w tym take
Linux) mog korzysta z tych zasobw uywajc narzdzi stworzonych
przez Andrew Tridgella.
S cztery rzeczy, ktre mona zrobi Samb:
1. Udostpnia dysk Linux-owy dla komputerw z Windows.
2. Udostpnia dysk Windows-owy dla komputerw z Linux-em.
3. Udostpnia drukark pod Linux-em dla Windows.
4. Udostpnia drukark pod Windows dla Linux-a.
Wszystko to zostao opisane w tym dokumencie.
Disclaimer. Procedury i skrypty albo dziaay u autora, albo zostay
opisane jako dziaajce przez tych, ktrzy je napisali. Rne
konfiguracje mog nie dziaa z podanymi tutaj informacjami. Jeli
odkryjesz tak sytuacj moesz napisa do autora list z sugesti na
ulepszenie tego dokumentu, ale autor nic nie gwarantuje. A czego si
spodziewae ? W kocu autor jest tyklo konsultantem.
11..11.. DDaallsszzee iinnffoorrmmaaccjjee..
Dokument ten jest prb opisania jak skonfigurowa na Linux-ie
podstawowe serwisy SMB zwizane z plikami i drukarkami. Samba jest
bardzo zoonym i kompletnym pakietem. Nie ma sensu, eby kopiowa
tutaj wszystko to co jest zawarte w dokumentacji dla tego pakietu.
Dalszych informacji moesz szuka w:
Dokumentacji do Samby, ktra jest czci dystrybucji. Dystrybucja
jest dostpna pod adresem: ftp.icm.edu.pl
HOWTO dotyczcym drukowania (Printing HOWTO)
oraz w mini-HOWTO Print2Win.
22.. IInnssttaallaaccjjaa..
Najwiesze rda Samby dostpne s pod adresem ftp.icm.edu.pl w
katalogu /pub/samba.
Jeli instalowae dystrybucj Red Hat moge wybra instalacj Samby
jako jedn z opcji. Niektre inne dystrybycje te oferuj binaria
Samby.
Nastpujce 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. Przykadowe skrypt znajduj si w sekcji
``Uruchamianie demonw.''
______________________________________________________________________
smbd (Demon SMB) i nmbd (wiadczy usugi nameservera NetBIOS-u)
______________________________________________________________________
Zwykle w systemie instalowane s nastpujce binaraia w katalogu
/usr/bin:
______________________________________________________________________
smbclient (Klient dla maszyn Unix-owych), smbprint (skrypt do
drukowania na drukarce przyczonej do hosta SMB), smbprint.sysv
(To samo co wczeniej, ale dla systemu UNIX SVR4), smbstatus
(Wywietla biece poczenia SMB na lokalnym hocie), smbrun
(Gwny skrypt do uruchamiania aplikacji na hocie SMB)
______________________________________________________________________
Dodatkowo zawarty jest w tym dokumencie skrypt o nazwie "print", ktry
jest poytecznym dokoczeniem skryptu smbprint.
Pakiet Samba jest prosty w instalacji. cignij go z podanego
wczeniej miejsca i przeczytaj plik README znajdujcy si w
dystrybucji. Jest jeszcze plik docs/INSTALL.txt, ktry podaje krok po
kroku co naley zrobi, aby zainstalowa Samb.
Postpujc wraz z instalacj, umie demony w /usr/sbin i binaria w
/usr/bin. Zainstaluj strony do podrcznika systemowego "man" w
/usr/local/man.
Kiedy bdziesz instalowa pakiet Samba, bdziesz musia poda miejsce,
gdzie ma si znajdowa plik konfiguracyjny smb.conf. Z reguy jest to
katalog /etc, ale moesz go umieci, gdzie ci si podoba. Dla
dalszych instrukcji zaoymy, e plik konfiguracyjny umiecie w
/etc, plik logujcy to /var/log/samba-log.%m i katalog blokujcy to
/var/lock/samba.
Zainstaluj plik konfiguracyjny smb.conf. Przejd do katalogu, gdzie
zostaa skompilowana Samba. Zajrzyj do katalogu examples/simple i
przeczytaj plik README. Skopiuj znaleziony tam plik smb.conf do /etc.
OOSSTTRROONNIIEE !!!!!! Jeli masz dystrybucj Linux-a, ktra miaa Samb i
zainstalowae j to pewnie masz ju plik smb.conf w katalogu /etc i
lepiej zacznij od tego pliku.
Jeli nie chcesz umieszcza pliku konfiguracyjnego w /etc, to umie
go tam, gdzie chcesz i zrb symboliczne doczenie:
______________________________________________________________________
ln -s /gdzie/jest/smb.conf /etc/smb.conf
______________________________________________________________________
33.. UUrruucchhaammiiaanniiee ddeemmoonnww..
Dwoma demonami SMB s: /usr/sbin/smbd i /usr/sbin/nmbd. Moesz je
uruchomi przez demona inetd lub jako osobne procesy. Jeli
konfigurujesz na stae serwer plikowy, to powinny one by uruchamiane
przez inetd po to, eby je ponownie uruchomi jeli z jakiego powodu
przestan dziaa. Jeli chcesz korzysta z Samby tylko czasami, to
moesz je uruchomi z ktrego ze skryptw startowych w katalogu
/etc/rc.d albo po prostu od rki wtedy kiedy je potrzebujesz.
Aby uruchomi demony przez inetd umie nastpujce 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
______________________________________________________________________
Nastpnie wylij sygna HUP do procesu nr 1:
______________________________________________________________________
kill -HUP 1
______________________________________________________________________
Dla uytkownikw dystrybucji Red Hat. Aby uruchomi te demony ze
skryptw startowych, umie nastpujcy skrypt w katalogu
/etc/rc.d/init.d/smb i docz je symbolicznie do plikw podanych w
komentarzu:
______________________________________________________________________
#!bin/sh
#
# /etc/rc.d/init.d/smb - startuje i zatrzymuje serwis SMB
#
# Nastpujce pliki powinny by symbolicznymi doczeniami do
# tego pliku:
# /etc/rc.d/rc1.d/K35smb (Zatrzymuje serwis SMB podczas
# zamknicia systemu.
# /etc/rc.d/rc3.d/S91smb (Startuje serwis SMB w trybie
# wielouytkownikowym
# /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 jestemy w sieci
[ ${NETWORKING} = "no" ] && exit 0
# Zobacz jak zostalimy wywoani
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 tumacza: Jeli uywasz dystrybucji Slackware. Umie poniszy
fragment w skrypcie startowym /etc/rc.d/rc.local:
______________________________________________________________________
# czy jestemy w sieci
[ ${NETWORKING} = "no" ] && exit 0
# Uruchmon demony Samby
/usr/sbin/smbd -D
/usr/sbin/nmbd -D
______________________________________________________________________
44.. OOggllnnaa kkoonnffiigguurraaccjjaa.. ((//eettcc//ssmmbb..ccoonnff))
Konfiguracja Samby na Unix-ie jest kontrolowana jednym plikiem:
/etc/smb.conf. W pliku tym umieszczasz zasoby jakie chcesz udostpni
dla wiata i jakie restrykcje chcesz wprowadzi.
Poniewa ta sekcja opisuje udostpnianie dyskw i drukarek Linux-owych
Windowsom, plik smb.conf bdzie najprostszym z moliwych.
Nie martw si o szczegy. Pniejsze sekcje wprowadz oglny koncept.
Kada sekcja pliku zaczyna si od nazwy jak np.: global, homes,
printers itp.
Sekcja global definiuje kilka oglnych zmiennych, ktre bd si
odnosi do wszystkich udostpnianych zasobw.
Sekcja homes pozwala uytkownikom na dostp do ich (i tyklo ich)
katalogw domowych na lokalnej maszynie Linux-owej. Jeli jaki
uytkownik Windows bdzie chcia skorzysta z udostpnianych zasobw,
to zostanie podczony do swojego katalogu domowego. Zauwa, e aby
to zrobi uytkownik musi mie swoje konto na maszynie Linux-owej.
Poniszy przykadowy plik smb.conf pozwala uytkownikom na dostp do
swoich katalogw domowych i na zapis do katalogu tymczasowego. Aby
uytkownik Windows zobaczy udostpniane zasoby, Linux musi by w tej
samej sieci lokalnej. Uytkownik Windows po prostu docza dysk
sieciowy z Menedera Plikw lub Eksploratora Windows.
W nastpnych sekcjach bd dodawane kolejne linie do tego pliku, aby
umoliwi dostp do wikszej iloci zasobw.
______________________________________________________________________
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 jeli 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.. UUddoossttppnniiaanniiee ddyysskkuu LLiinnuuxx--oowweeggoo kkoommppuutteerroomm zz WWiinnddoowwss..
Jak wida na powyszym przykadzie udostpnianie dyskw Linux-owych
uytkownikom Windows jest proste. Dostp do zasobw udostpnianych
poprzez Samb mona w bardzo duym stopniu kontrolowa.
Aby udostpni wszystkim jakie zasoby, dodaj ponisze linie do
smb.conf:
______________________________________________________________________
[public]
comment = Public Stuff path = /home/public public = yes writable = yes
printable = yes
______________________________________________________________________
Aby umoliwi zapis do tego katalogu tylko dla czonkw grupy staff,
zmodyfikuj te linie w nastpujcy sposb:
______________________________________________________________________
[public]
comment = Public Stuff path = /home/public public = yes writable = yes
printable = no write list = @staff
______________________________________________________________________
Wicej informacji na temat rnych sposobw udostpniania zasobw
znajdziesz w dokumentacji do Samby.
66.. UUddoossttppnniiaanniiee ddyysskkuu ssppoodd WWiinnddoowwss mmaasszzyynnoomm zz LLiinnuuxx--eemm..
Wraz z dystrybucj Samby otrzymujemy klienta dla Unix-w. Jego
interfejs polece jest podobny do ftp. Moesz go uywa, aby przenosi
pliki midzy Windowsowym "serwerem" a klientem Linux-owym.
Aby zobaczy jakie zasoby sa udostpnione na danym hocie napisz:
______________________________________________________________________
/usr/sbin/smbclient -L host
______________________________________________________________________
gdzie host jest nazw maszyny, ktrej zasoby chcesz zobaczy.
Polecenie to zwrci list nazw serwisw - to znaczy nazw dyskw lub
drukarek, ktre moe udostpni. Serwer Samby bdzie ci pyta o
haso, o ile nie ma skonfigurowanego bezpiecznego dostpu.
Np.
______________________________________________________________________
smbclient -L zimmermann
______________________________________________________________________
Polecenie to powinno wywietli co na ksztat:
______________________________________________________________________
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 udostpniajce zasoby w sieci.
Aby uy klienta napisz:
______________________________________________________________________
/usr/sbin/smbclient serwis <haso>
______________________________________________________________________
gdzie serwis jest nazw maszyny i zasobu. Na przykad jeli prbujesz
dosta si do katalogu, ktry jest udostpniany jako public na
maszynie o nazwie zimmermann, serwisem byoby: \zimmermanublic.
Chocia z powodu powoki w Linux-ie bdziesz musia oznaczy znaki
specjalnie i polecenie ostatecznie wyglda tak:
______________________________________________________________________
usr/sbin/smbclient \\\\zimmerman\\public haso
______________________________________________________________________
gdzie haso jest acuchem znakw bdcym twoim hasem.
Pojawi si wtedy znak zachty 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: \>
______________________________________________________________________
Jeli umiesz uywa ftp, to nie powiniene potrzebowa czyta
podrcznika systemowego na temat smbclient.
77.. UUddoossttppnniiaanniiee ddrruukkaarrkkii LLiinnuuxx--oowweejj kkoommppuutteerroomm zz WWiinnddoowwss..
Aby udostepni drukark Linux-ow Windowsom musisz si upewni, e
drukarka dziaa dobrze pod Linux-em. Jeli moesz 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 uywa drukarki poczonej z Windows NT, sekcja ta nie
powinna by brana za definicj, ale bardziej jako sugestia. Jeli
ktokolwiek ma ochot si podzieli szczegami na temat innych
konfiguracji prosz o kontakt, aby ta sekcja moga zosta skoczona:
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 cieka do drukarki (w tym wypadku w sekcji ]ljet[)
jest taka sama jak katalog zada w etc/printcap.
UWAGA: S pewne problemy przy udostpnianiu drukarki Unixowej przez
Samb komputerom z Windows NT. Jeden problem to taki, eby NT widziao
poprawnie drukark. Aby go zlikwidowa przeczytaj plik docs/WinNT.txt,
ktry jest dostarczany wraz z dystrybucj. Drugi problem to hasa.
Przeczytaj ten sam plik, aby rozwiza ten problem.
88.. UUddoossttppnniiaanniiee ddrruukkaarrkkii ssppoodd WWiinnddoowwss kkoommppuutteerroomm zz LLiinnuuxx--eemm..
Aby udostpni drukark spod Windows-w musisz zrobi nastpujce
rzeczy:
a) Musisz mie poprawne pola w /etc/printcap i musz one odpowiada
lokalnej strukturze katalogw (katalog dla drukarki itp.)
b) Musisz mie skrypt /usr/bin/smbprint. Skrypt ten znajduje si w
rdach Samby, ale nie w kadym pakiecie binarnym. Poniej znajduje
si troch zmodyfikowana wersja tego skryptu.
c) Jeli chcesz zamienia pliki ASCII na PostScript, musisz mie
nenscript albo jego ekwiwalent. nenscript jest konwerterem PostScript-
owym i jest z reguy instalowany w /usr/bin.
d) Moesz uatwi drukowanie poprzez Samb piszc skrypt. Poniej
podany jest prosty skrypt w Perl-u obsugujcy pliki ASCII, PostScript
i stworzony PostScript.
Ponisze pola w /etc/printcap s dla drukarki HP 5MP doczonej do
komputera z Windows NT.
______________________________________________________________________
cm - komentarz; lp - urzdzenie, na ktre ma by wysany wydruk;
sd - katalog zada dla drukarki (na lokalnym komputerze); af -
katalog accounting; mx - maksymalny rozmiar pliku (0 - bez
ograniczenia); if - nazwa filtru wejciowego (skryptu).
______________________________________________________________________
Wicej informacji znajdziesz w Printing-HOWTO lub w podrczniku
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 ciek do scryptu smbprint (patrz poniej) i
e lp wskazuje poprawne urzdzenie (plik specjalny w katalogu /dev)
Nastpnym krokiem jest skrypt smbprint. Zwykle znajduje si on w
/usr/bin i jest przypisywany Andrew Tridgellowi - osobie, ktra
stworzya Samb o ile wiem. Przychodzi on wraz z dystrybucj rde
Samby, ale nie ma go w dystrybucji binariw, wic go tutaj stworzyem.
Moesz przejrze go dokadniej. Przerobiem go troch, poniewa
przerbki wydaway mi si uyteczne.
______________________________________________________________________
#!/bin/sh
# Skrypt ten jest filtrem wejciowym do drukowania na drukarce
# doczonej do Unix-a. Uywa programu smbclient do drukowania
# pliku. Na przykad twj printcap mgby wyglda nastepujco:
#
#
# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
#
#
# Stworzyby on drukark o nazwie smb, ktra drukowaaby poprzez
# ten skrypt. Musiaby stworzy katalog zada /usr/spool/smb z
# odpowiednimi dla twojego systemu prawami dostpu i wacicielem.
#
# Ustaw nastpujce rzeczy na serwer i serwis przez, ktry chcesz
# drukowa. W tym przykadzie mam PC-ta z WfWg o nazwie "lapland",
# ktry ma drukark o nazwie printer bez hasa.
#
#
# W dalszej czci skrypt zosta przerobiony przez hamilton@ecnz.co.nz
# (Michael Hamilton, tak aby serwer, serwis i haso mogy by
# przeczytane z pliku /usr/var/spool/lpd/PRINTNAME/.config
#
# Aby to dziaao /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 ktrego maj byc zapisywane wiadomoci ze ledzenia;
# moesz zmieni na /dev/null jeli 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 haso uytkownik
eval `cat $config_file`
# Trcoh pomocy, zmie >> na > jeli chcesz zachowa troch
# miejsca na dysku.
#
echo "server $server, service $service" >> $logfile
(UWAGA Moesz doda lini `echo translate' jesli chcesz
# automatycznego tumaczenia CR/LF podczas drukowania.
echo translate echo "print -" cat
) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $user
-N -P >>
$logfile
______________________________________________________________________
Wikszo dystrybucji Linux-owych posiada nenscript do zamiany
dokumentw ASCII na PostScript. Nastpujcy skrypt w Perl-u uatwia
ycie stwarzajc 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 rdo; -code p drukuje <nazwa_pliku> jako
PostScript.
Jeli nie ma adnej opcji, print prbuje odgadn typ pliku i
odpowiednio go wydrukowa.
______________________________________________________________________
Uycie smbprint do drukowania plikw ASCII powoduje obcinanie dugich
linii. Ten skrypt dzieli dugie linie w miejscu spacji (zamiast w
rodku sowa) jeli jest to moliwe.
Formatowanie rda odbywa sie przy pomocy programu nenscript. Bierze
on plik ASCII i formatuje go w dwie kolumny z dodatkowym nagwkiem
(data, nazwa pliku, itp.) Zlicza take ilo linii. Wzorujc si na
tym przykadzie moesz zrobi inne typy formatowania.
Dokumenty PostScript-owe s ju sformatowane wic przechodz
bezporednio do drukarki.
______________________________________________________________________
usr/bin/perl
# Skrypt: print Autorzy: Brad Marshall, David Wood
# Plugged In Communications Date: 960808
#
# Skrypt do drukowania na drukarce oreilly, ktra jest doczona do
# komputera zimmerman. Opis dziaania: Jako argumenty przyjmuje pliki
# rnych typw i wysya je odpowiednio do skryptu drukujacego Samby
#
# Obecnie obsugiwane typy plikw:
#
# ASCII - Upewnij si, e linie dusze ni $line_length zostay
# podzielone w miejscu spacji.
# PostScript - Nie robi nic.
# Code - Formatuje na PostScript uywajc "nenscript", aby wszystko
# byo odpowiednio wywietlone (uoenie, czcionki, itd.)
#
#
# Ustaw maksymaln ilo znakw w linii dla plikw ASCII. line_length
$= 76;
# Ustaw ciek i nazw skryptu drukujcego Samby print_prog =
$"/usr/bin/smbprint";
# Ustaw ciek 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;
}
# Wylij tablc do smbprint open(PRINTER, "|$print_prog") || die "Can't
open $print_prog: $!\n"; foreach
$line (@newlines) {
print PRINTER $line;
}
# Wylij dodatkowy znak LF jeli plik ma niekompletn ostatni lini. print
PRINTER "\n"; close(PRINTER); print "Completed\n"; exit 0;
# --------------------------------------------------- #
# Wszystko poniej jest procedur #
# --------------------------------------------------- #
sub ParseCmdLine { Interpretuje wiersz polece, szukajc 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 dopki ($cmd) { Nie mamy argumentw
if ($file =~ /\.ps$/) { filetype = "ps"; elsif ($file =~
$/\.java$|\.c$|\.h$|\.pl$|\.sh$|\.csh$|\.m4$|\.inc$|\.html$|\.htm$/)
${ filetype = "code"; else { filetype = "ASCII";
}
# Przerb $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
rdo
-code p drukuje <plik> jako PostScript
Jeli nie ma adnej opcji, print prbuje odgadn typ pliku i
odpowiednio go wydrukowa.\n
";
exit(0);
}
sub wrap { Stwrz tablic linii w pliku, gdzie kada linia jest krtsza od
# podanej iloci znakw i jest podzielona tylko w miejscach spacji
# Pobierz ilo znakw jaka moe 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 jeli jest dusza ni podana ilo znakw. while (
length($line) > $limit ) {
# DBG print "Wrapping...";
# Pobierz pierwsze $limit+1 znakw. 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 ) { Jeli 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 { Jeli 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 uatwi 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 byo spacji w linii
} wic
# wydrukuj do $limit.
substr($line,0,$limit) = "";
push(@newlines,substr($part,0,$limit)
. "\n");
}
}
}
push(@newlines,$line);
}
close(FILE);
}
sub codeformat { Wywoaj procedur wrap i przefiltruj przez nenscript
&wrap($line_length);
# Przepu wynik przez nenscript, aby utworzy plik PostScript,
# ktry pasuje do jakiego przyzwoitego formatu rde do drukowania
# (uoenie, 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 mg by
# wysany 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 { Stwrz tablic dla PostScript-u open(FILE, "<$file") ||
# die "Can't
open $file: $!\n"; while(<FILE>) {
push(@newlines,$_);
}
close(FILE);
}
______________________________________________________________________
99.. PPrraawwaa aauuttoorrsskkiiee ii ZZaakkoocczzeenniiee..
99..11.. PPrraawwaa aauuttoorrsskkiiee..
Dokument ten jest chroniony prawami autorskimi Davida Wooda 1996.
Moe on by reprodukowany w kadej formie i dystrybuowany bez
ogranicze tak dugo jak nie zmieni si jego zawarto i zawarte jest
w nim to stwierdzenie.
99..22.. PPooddzziikkoowwaanniiaa..
Jeli tylko przylesz mi jakie sugestie, umieszcz ci tutaj w
nastpnej wersji.
99..33.. OOdd ttuummaacczzaa..
Tumaczenie to jest chronione prawami autorskimi Bartosza
Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na
prawach takich samych jak dokument oryginalny.
Jeli znalaze jakie race bdy ortograficzne, gramatyczne,
skadniowe, techniczne to pisz do mnie:
B.Maruszewski@zsmeie.torun.pl
Oficjaln stron tumacze HOWTO jest http://www.jtz.org.pl/
Aktualne wersje przetumaczonych dokumentw znajduj si na teje
stronie. Dostpne s take poprzez anonimowe ftp pod adresem
ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/.
Przetumaczone przeze mnie dokumenty znajduj si take na mojej
stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> S
tam te odwoania do Polskiej Strony Tumaczeniowej.
Kontakt z nasz grup, grup tumaczy moesz uzyska poprzez list
dyskusyjn jtz@ippt.gov.pl. Jeli chcesz sie na ni zapisa, to wylij
list o treci subscribe jtz Imi Nazwisko na adres
listproc@ippt.gov.pl
|