以下の2つの方法で印刷可能:
lpr
コマンドを使用smbclient
のプリント機能を使用
/etc/printcap
どちらも以下のように作成された /etc/printcap
ファイルを使用します。
/etc/printcap:
#
# lpr コマンドを使用したい場合は、PRINTER 環境変数を PRINTER=eng
# または PRINTER=colour、PRINTER=optrac、PRINTER=optrar の何れか
# に設定する。あるいは lpr -P でファイルへの印刷も可能。
# Harish Pillay (h.pillay@ieee.org)
# //gaia/lexENG1 に smbprint 経由で印刷
#
eng|lp:\
:cm=LexMark Optra R+ PostScript Printer:\
:lp=/dev/eng:\
:sd=/var/spool/lpd/eng:\
:af=/var/spool/lpd/eng/acct:\
:mx#0:\
:if=/usr/local/samba/bin/smbprint:
#
# //gaia/lexTRG1 に smbprint 経由で印刷
#
colour|lpcolour:\
:cm=LexMark Optra C PostScript Printer:\
:lp=/dev/colour:\
:sd=/var/spool/lpd/colour:\
:af=/var/spool/lpd/colour/acct:\
:mx#0:\
:if=/usr/local/samba/bin/smbprint:
#
# lpr を使用して Optra R+ Postscript (白黒) に直接印刷
#
optrar:\
:cm=LexMark Optra R+ PostScript Printer:\
:sd=/usr/spool/lpd:\
:lf=/usr/spool/lpd/errors:\
:rp=optrar.dom.ain:\
:rm=optrar.dom.ain:\
:sh:\
:sf:
#
# lpr を使用して Optra R+ Postscript (カラー) に直接印刷
#
optrac:\
:cm=LexMark Optra C PostScript Printer:\
:sd=/usr/spool/lpd:\
:lf=/usr/spool/lpd/errors:\
:rp=optrac.dom.ain:\
:rm=optrac.dom.ain:\
:sh:\
:sf:
# /etc/printcap ファイルの終わり
手順:
lpd
を起動します
( /etc/rc.d/rc.M
と /etc/rc.d/rc.inet2
を確認 )。lpr
で直接印刷できます。smbprint
(SAMBA
に付属)スクリプトを使用して印刷します。
(http://www.nijenrode.nl/ steven/ldp/Printing-HOWTO.html参照)
smbprint
スクリプト
以下は若干の変更を施した著者の smbprint
スクリプトです:
/usr/local/samba/bin/smbprint
:
#!/bin/sh -x
# このスクリプトは UNIX マシンで printcap を使用して印刷するための
# 入力フィルタで、smbclient プログラムを使用して指定した smb サーバー
# またはサービスにファイルを印刷します。
# 例えば以下のような printcap エントリを設定すれば、このスクリプトを
# 使用して印刷できる smb という名のプリンターを生成できます。
#
# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
#
# この時、スプール用にシステムに対し適切なアクセス権限とオーナーに設定
# された /usr/spool/smb ディレクトリの作成が必要です。
#
# hamiltom@ecnz.co.nz (Michael Hamilton)が改良し、サーバーやサービス、
# パスワードを /usr/var/spool/lpd/PRINTNAME/.config から見れるようした
# スクリプトです。
#
# さらに h.pillay@ieee.org (Harish Pillay)が変更し、ユーザー変数を追加
# したスクリプトです。
#
# これを動作させるには /etc/printcap エントリにアカウンティング
# ファイル(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:
#
# /usr/var/spool/lpd/PRINTNAME/.config ファイルは以下を含んで
# いなければなりません:
# server=PC_SERVER
# service=PR_SHARENAME
# password="password"
# user=USERNAME (h.pillay@ieee.org により追加)
#
# 例:
# server=PAULS_PC
# service=CJET_371
# password=""
# user=HARISH (h.pillay@ieee.org により追加)
#
# デバッグ用のログファイル。必要なければ /dev/null に変更。
#
logfile=/tmp/smb-print.log
# logfile=/dev/null
#
# フィルタへの最後のパラメータはアカウンティング・ファイル名です。
# ファイル名からディレクトリ名を取り出します。
# これに /.config をつけて config ファイルとします。
#
eval acct_file=\$$#
spool_dir=`dirname $acct_file`
config_file=$spool_dir/.config
# 設定ファイルに以下の変数が設定されていなければなりません:
# server
# service
# password
# user (h.pillay@ieee.org により追加)
eval `cat $config_file`
#
# デバッグ用のヘルプ。 大きさを変えたくなければ >> を > に変更。
#
echo "server $server, service $service" >> $logfile
(
# 注 印刷時に自動 CR/LF 変換が必要であれば `echo translate' の行を追加。
echo translate
echo "print -"
cat
) | /usr/local/samba/bin/smbclient "\\\\$server\\$service" $password
-U $user -N -P >> $logfile
# /usr/local/samba/bin/smbprint の終わり
とても良い tip ですね。私もほとんど同様に使っています。さて 私からも tip を一つ。以下のような設定はあまり良くありません:
:lp=/dev/null:\
lpr
は lp=
として指定したファイルを '排他的' にオープン
します。これはマルチプロセスがプリンターへ同時に印刷しようとするのを
避けるためです。
この副作用としてあなたの環境では、eng
と colour
は同時に
印刷できません((lpr
経由のは)あっという間に印刷されますし、
(smbclient
経由のは)気づかないうちにキューされちゃいますから、
通るように見えるでしょうけど。)しかし、/dev/null
に書き込もうとする
他のプロセスはすべて中断してしまいます。
シングルユーザーシステムでは大きな問題にはならないでしょう。わたしの所 には 50 を超えるプリンターを接続したシステムがあります。この環境では問 題となります。
解決策はそれぞれにダミープリンターを作成することです。
例:touch /dev/eng
著者は Rick の教えに従い、上記の printcap
ファイルの lp
エントリを変更し、以下のようにしました:
#touch /dev/eng
#touch /dev/colour
最前線からの tip をありがとう、Rick!