· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/SMB_Printer-KLDP

SAMBA를 이용한 프린터 설정

SAMBA를 이용한 프린터 설정

방 창현 winchild@kldp.org, winchild@kldp.org

1999년 8월 17일 ver0.01 SGML 편집: 신 동원 mailto:kaien@metal.me.pusan.ac.kr

1. SAMBA에서 LINUX 측의 프린터 세팅 관련

유닉스에서 프린터를 사용하려면 /etc/printcap 파일을 설정해야 한다.

예제를 보면

       lp|lj|HP LJ6P:\
              :lp=/dev/lp0:\
              :sd=/var/spool/lpd/lj:\
              :mx#0:sh:sf:

각각의 설명는 | 로 구분된 lp 와 lj 은 프린터의 명칭이다. lpr -P <name> 에서 name의 프린터 명으로 이용된다. lp=/dev/lp0 는 프린터 device의 명칭이다. 어느 포트에 프린터가 붙어 있는지는

       # cat /etc/hosts > /dev/lp0

와 같은 리다이렉션 명령으로 확인해 볼수 있다. 이경우 hosts의 텍스트 파일이 인쇄되면 프린터와의 연결은 이상이 없는것이다.

sd=/var/spool/lpd/lj 은 spool 디렉토리로서 파일을 인쇄할시에 임시로 저장해 놓는 공간이다. 해당 path 대로 디렉토리를 생성해 놓아야 한다. mx#0 는 파일의 크기를 제한하지 말라는 옵션이며 sh는 대량의 출력을 제한하지 않는 옵션이며 (Windwos 애서 생성하는 파일은 대량의 이미지 파일이므로 제한하면 안된다.) sf 옵션은 문서를 출력한후에 form feed 문자를 보내지 말라는 것이다. (이것을 지정해 놓지 파일의 출력시에는 빈페이지가 하나씩 더나가게 된다. 그러나 UNIX의 form feed가 없는 ASCII문서 출력시에는 필요하다.) sh, sf 옵션은 선언되면 false 가 되는 옵션이다. (man printcap 참조)

printcap 파일이 제대로 되었으면 lpc 명령으로 프린팅 서비스가 구동되도록 한다.

       # lpc

       lpc> restart all

       lpc > status

       lp:
            queuing is enabled
            printing is enabled
            no entries
            no daemon present
       lpc>

구동이 된것이 확인되면 출력이 되는지 확인한다. 이때 sf 옵션이 false 이므로 포함되어 있으므로 일반 ASCII 문서 를 골라서 끝에 ^L (form feed) 문자를 삽입하여 lpr 명령으로 찍이는지 확인한다.

       # lpr -P lp /tmp/testfile

성공적으로 인쇄되었으면 SAMBA 를 세팅한다. 일반적인 세팅방법은 기존에 잘 설명되어 있는 문서를 보는것으로 생략하고

       path = /var/spool/lpd/lj
       printer name = lj
       print command = lpr -r -h -P %p %s

와 같이 /etc/printcap 에 선언된 sd 및 prnter name 이 일치하도록 하여야 한다. print command 는 실제의 인쇄명령으로서 그대로 인쇄되는지 SHELL에서 실행시켜 보도록 한다.

       # lpr -r -h -P <printer name> <인쇄 파일명>

이렇게 하여 인쇄가 되면 samba를 통하여 인쇄하면 보통 성공하게 된다. 만일 인쇄가 되지 않으면 /var/log/samba 에 있는 로그파일 을 참조하도록 한다. 인쇄가 실패할 경우에 PC로 부터 전송된 파일은 spool 디렉토리에 위치하게 되므로 lpr 명령으로서 인쇄를 시켜보아서 정상적으로 출력되게 되면 어딘가 연결고리가 문제가 있는것이므로 차근차근 확인해 보도록 한다. 전송되는 연결고리는 다음과 같으며 각각 아래의 파일을 참조한다.

       PC Client   -> Sambar Server ----> lpr ------------> Printer

       (PC조절판)     (/etc/smb.conf)         (/etc/printcap)

즉 PC에서 인쇄를 명령하면 Printer Driver 가 프린터 제어 이미지를 생성하고 LanManager 의 패킷으로 SAMBA 서버에 보내면 이것을 smb.conf 에 지정한 spool 디렉토리에 저장한후 lpr 명령으로 인쇄를 지시한다. lpr 은 printcap 파일의 지정된 옵션에 따라서 프린터에 인쇄파일을 보내게 된다.

2. SAMBA 에서 REMOTE-PC 측의 프린터 세팅 관련

PC측에 연결된 리모트 프린터를 LINUX의 SAMBA 에서 접근하는 방법은 조금 다르다. 이것은 LINUX의 printcap에 있는 필터를 이용하는 것으로 생성된 프린트파일을 다시 프린터가 연결된 PC로 전송한다.

       PC Client   -> Sambar Server ----> lpr ------------> smbprint -----> PC ----> Printer

       (PC조절판)     (/etc/smb.conf)         (/etc/printcap)       .config              (프린터서버)

  따라서 lpr 명령시에 참조하는 printcap 파일에 필터를 지정하는 if 옵션에 smbprint를 수행하도록 지정하고 있으며 smbprint는 smbclient를 호출하여 PC에 파일을 전송한다. 이때 PC서버에 접속할수 있는 권한을 얻기 위하여 .config 파일에 서버명, 서비스명 및 비밀번호 기록해 놓아서 smbclient가 해당정보를 획득할 수 있도록 한다.

       lp|lj|HP LJ6P:\
              :lp=/dev/null:\
              :sd=/var/spool/lpd/lj:\
              :mx#0:sh:sf:\ :if=/usr/bin/smbprint:
              :af=/var/spool/lpd/lp/acct:

이때 LINUX에는 프린터가 연결된 것이 아니므로 lp 는 null 디바이스를 지정한다. if 가 필터로서 smbprint는 script 파일이다. 그파일의 내부에 서버 및 서비스, 비밀번호를 얻은후 smbclient를 수행하는 script가 포함되어 있다.


   -- 앞에는 생략 ---

   eval `cat $config_file`
   #
   # Some debugging help, change the >> to > if you want to same space.
   #
   echo "server $server, service $service" >> $logfile

   (
   # NOTE You may wish to add the line `echo translate' if you want automatic
   # CR/LF translation when printing.
   # echo translate
   echo "print -"
   cat
   ) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P >> $lo
   gfile

$config 파일은 보통 spool 디렉토리에 .config 파일로 존재한다. (생략된 부분 확인) .config의 내용은

       server=PC_SERVER
       service=PR_SHARENAME
       password="password"

와 같은 ASCII 파일로 생성한다. password 는 꼭 "(더블 쿠오테이션)로 열고 닫아야 하며 비밀번확 없을 시에는 "" 로 표현한다. 이부분에서 파일이 제대로 전송되지 않을 시에는 spool 파일에 생성된 파일을 직접 smbclient를 실행시켜 PC에서 인쇄되는지 확인해 본다.

       # smbclient '\\mimas\lj' <passwd> -U mimas -N -P

이와 같이 해서 인쇄가 된다면 위에서 기술한 연결관계가 원할하지 않은 원인으로 smbclient가 실행되지 않는것이므로 LOG 파일등을 차근차근히 살펴보도록 한다. 인쇄가 되지 않는다면 프린터가 연결된 PC서버에 문제가 있는것으로 추정할 수 있으므로 해당 PC서버에서 프린터의 연결관계를 확인해 보도록 한다.  




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-02-04 10:57:08
Processing time 0.0032 sec