FreeBSD QandA 1470
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 まで
お知らせください。