FreeBSD QandA 1470

FreeBSD QandA

Q. FreeBSD から、Windows NT 4.0 に接続されたプリンタへの印刷。

A. 以下のような2つの方法があります。

   1. WinNT に lpd(8) サービスを導入して印刷。
      まず FreeBSD 側の設定です。

      a) /etc/printcap に実際のプリント用と Ghostscript のフィルタ用の二つの
       エントリを追加します。なお、リモートホスト名を BLESS、リモートプリンタ
       名を LP-1500 と仮定します。書式についての詳細は printcap(5) を読んで
       ください。

        remote:\
           :lp=/dev/null:sh:mx#0:lf=/var/log/lpd-errs:\
           :sd=/var/spool/output/remote:\
           :if=/usr/local/libexec/LP-1500.sh:

        remote-help:\
           :lp=/dev/null:sh:mx#0:lf=/var/log/lpd-errs:\
           :rm=BLESS:rp=LP-1500:\
           :sd=/var/spool/output/remote-help:

      b) 上記で追加したエントリ用のスプールディレクトリを作成します。

        # mkdir /var/spool/output/remote
        # mkdir /var/spool/output/remote-help

      c) 以下の様なフィルタ /usr/local/libexec/LP-1500.sh を作成し、chmod +x 
       しておきます。使用するプリンタにより設定は異るでしょう。

        #!/bin/sh
        exec /usr/local/bin/gs -q -dNOPAUSE -sDEVICE=epag \
            -sOutputFile=- - | lpr -l -Premote-help

      d) WinNT で lpd の service を稼働させるには、
        サービス -----> TCP/IP Print Server です。

      e) 印刷方法は、
        % lpr -Premote tiger.ps です。

      森さんよりの貴重なアドバイスについては、[FreeBSD-beginners-jp 6561]
      前後を見てください。


   2. lpd を使わずに smbclient(1) の print コマンドで印刷する。

      /etc/printcap は使いません。スクリプトによる自動化では
      [FreeBSD-users-jp 38229] を参考にしました。

      a) /usr/local/bin/gsf として以下の内容のスクリプトを作成します。

        #!/bin/sh
        OF=/var/tmp/gsf.$$.LP-1500
        trap "rm -f $OF; exit 1" 2 15
        touch $OF
        chmod 600 $OF
        { echo showpage ; echo quit ; } | \
          /usr/local/bin/gs -q -dSAFER -dNOPAUSE -sDEVICE=epag \
            -sPAPERSIZE=a4 -sOutputFile=$OF $1 > /dev/null 2>&1
        /usr/local/bin/smbclient '\\BLESS\lp-1500' \
            himitu -U user1 -P -N -c "print $OF"
        rm -f $OF
        exit 0

      b) スクリプトのパーミッションを設定します。特に smbclient へのパスワー
       ドとユーザ名については、一般ユーザに読めないようにする必要があるかも
       しれません。

        # chown root.wheel /usr/local/bin/gsf
        # chmod 711 /usr/local/bin/gsf

      c) そして印刷は、

        % gsf tiger.ps

       です。ただし、一時ファイル /var/tmp/gsf.$$.LP-1500 を印刷実行中に変更
       しないこと!

      ここでも森さんにお世話になりました。[FreeBSD-beginners-jp 6586] 前後を
      見てください。

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。