![]() |
Using SambaRobert Eckstein, David Collier-Brown, Peter Kelly 共著第一版 1999 年 11 月 1-56592-449-5, 注文番号: 4495 416 ページ, 34.95 ドル |
7.2 Windows クライアント上のプリンタへの印刷
Windows 95/98 や Windows NT 4.0 が動作しているクライアントに接続されたプリンタに対して、Samba からアクセスすることも可能である。Samba には、Windows ベースのプリンタに印刷ジョブをスプールすることが可能な smbprint というツールが同梱されている。ただし、これを用いるためには、クライアントマシン上でプリンタを共有リソースとして設定する必要がある。まだ行なっていない場合は、スタートボタンからたどれる 図 7.7のような「プリンタ」ウインドウから、設定を行なうことができる。
図 7.7: 「プリンタ」ウィンドウ
ローカルに接続されているプリンタを選択し(ここでは Canon のプリンタになっている)、右クリックをしてメニューを表示させ、「共有」を選択する。これで 図 7.8のような、プリンタのプロパティ中の「共有」タブが表示される。LAN 上の誰でも Windows のゲストユーザとして印刷できるようにしたい場合は、パスワードを入力しないこと。
図 7.8: プリンタの「共有」タブ
ここまでの作業が完了したら、プリンタを標準的なプリンタのリスト(monyo 訳注: /etc/printcap のこと)に追加することで、Samba がワークグループ内の他のPCに利用させることが可能になる。UNIX 上でのインストールを簡単にするために、Samba の配布パッケージには、2つのサンプルスクリプト: smbprint と smbprint.sysvが含まれている。1つ目はBSD形式のプリンタ用で、もう1つは、System V プリンタ用に書かれたものである。
7.2.1 BSD プリンタ
BSD UNIX がリモートのプリンタを認識できるようにするには、2つのステップが必要である:
まず、 /etc/printcap ファイルを編集して、リモートプリンタのエントリを追加する。マシンがWindows 95/98 の場合、input フィルタ(
if
)のエントリには、 smbprintプログラムを設定する必要がある。以下の設定例は Linux マシン上で確認したものである:laserjet:\ :sd=/var/spool/lpd/laser:\# spool directory
:mx#0:\# maximum file size (none)
:sh:\# surpress burst header (no)
:if=/usr/local/samba/bin/smbprint:# text filter
その後上記の
sd
パラメータで指定したスプールディレクトリに設定ファイルを作成する必要がある(ディレクトリ自体を作成する必要があるかも知れない)。ファイルは .configという名前で、以下の情報を含んでいる必要がある:後ろ二つのパラメータは、Windows マシン上の該当リソースの「共有」ダイアログで設定されたものである。今回の例では .config ファイルには、以下の3行が書き込まれる:
server = phoenix service = CANON password = ""この設定を行なってから、Samba サーバのマシンを再起動し、通常のUNIXプログラムから印刷を行なってみてほしい。
7.2.2 System V プリンタ
System V UNIX システムからの印刷ジョブの送信は、少しだけ簡単である。この場合、 smbprint.sysvスクリプトを /usr/local/samba/examples/printingディレクトリに配置して、以下のように設定を行なう:
スクリプト中の
server
,service
,password
パラメータを、それぞれNetBIOS名、共有されているプリンタサービス名、パスワードに変更する。例えば前述した例では、以下のように設定を行なえばよい:server = phoenix service = CANON password = ""# lpadmin -p canon_printer -v /dev/null -i ./smbprint.sysv # enable canon_printer # accept canon_printerこの作業を行なってから、Samba デーモンを再起動して、通常のUNIXプログラムを用いて印刷を行なってみてほしい。ネットワーク経由で、Windows 上のプリンタにデータを送信することが出来るようになっている筈である。
7.2.3 Samba の印刷オプション
表 7.2 に Samba の印刷オプションをまとめてある。
表 7.2: 印刷設定オプション オプション
パラメータ
機能
デフォルト
範囲
printing
bsd
,sysv
,hpux
,aix
,qnx
,plp
,softq
, orlprng
UNIX システムに応じた印刷システムの形式を設定する
システムに依存する
共有
printable (print ok)
真偽値
共有をプリンタ共有として機能させる
no
共有
printer (printer name)
文字列 (UNIX のプリンタ名)
クライアントに公開するプリンタの名前を設定する
システムに依存する
共有
printer driver
文字列 (プリンタドライバ名)
プリンタにデータを送信するためにクライアントによって使われるドライバ名を指定する
なし
共有
printer driver file
文字列 (フルパス名)
プリンタドライバファイル名を設定する
なし
グローバル
printer driver location
文字列 (ネットワークパス名)
プリンタドライバの存在する共有のパス名(monyo 訳注:UNC 名)を指定する
なし
共有
lpq cache time
数値 (秒単位の時間)
Samba が lpq ステータスをキャッシュする時間を秒単位で設定する
10
グローバル
postscript
真偽値
各ファイルの先頭に、
%!
を付加することで、印刷ジョブをポストスクリプトとして扱うようにする
no
共有
load printers
真偽値
printcap ファイル中の各プリンタを、プリンタ共有として自動的に設定する
no
グローバル
print command
文字列 (シェルコマンド)
印刷を行なうためのUNIXコマンドを設定する
以下を参照のこと
共有
lpq command
文字列 (シェルコマンド)
印刷キューの状況を返却するためのUNIXコマンドを設定する
以下を参照のこと
共有
lprm command
文字列 (シェルコマンド)
印刷キューからジョブを削除するためのUNIXコマンドを設定する
以下を参照のこと
共有
lppause command
文字列 (シェルコマンド)
印刷キュー上のジョブを一時停止させるためのUNIXコマンドを指定する
以下を参照のこと
共有
lpresume command
文字列 (シェルコマンド)
印刷キュー上で一時停止させたジョブを再開させるためのUNIXコマンドを設定する
以下を参照のこと
共有
printcap name
(printcap)
文字列 (フルパス名)
プリンタ構成ファイルの位置を指定する
システムに依存する
グローバル
min print space
数値 (キロバイト単位)
印刷のために必要な最低限のディスクの空き容量を設定する
0
共有
queuepause command
文字列 (シェルコマンド)
キューを一時停止させるためのUNIXのコマンドを指定する
以下を参照のこと
共有
queueresume command
文字列 (シェルコマンド)
キューを再開させるためのUNIXコマンドを指定する
以下を参照のこと
共有
7.2.3.1 printing
printing
設定オプションは、Samba に、UNIX の印刷システムに関する情報を提供する。これは印刷パーサによって利用される。UNIXには印刷や印刷のステータスを管理するためのコマンドセットが幾つか存在する。Sambaは7つの異なったタイプを提供している。これらを 表 7.3に示す。
表 7.3: 印刷タイプ 変数
定義
BSD
Berkeley UNIX システム
SYSV
System V
AIX
AIX オペレーティングシステム (IBM)
HPUX
Hewlett-Packard UNIX
QNX
QNX Realtime Operating System (QNX)
LPRNG
LPR Next Generation (Powell)
SOFTQ
SOFTQ システム
PLP
Portable Line Printer (Powell)
このオプションの値はこれらの7つの値のいずれかになる。以下に例を示す:
printing = SYSVこのオプションのデフォルト値はシステム依存であり、Samba がコンパイルされたときに決定される。多くのシステムでは、 configure スクリプトが利用する印刷システムを自動的に検出し、Samba の makefile 中で正しく設定を行なう。ただし、印刷システムが PLP, LPRNG, QNX 印刷システムの場合は、これを明示的に makefile 中かプリンタ共有で指定する必要がある。
一般的に用いられるシステムのタイプは、BSD と SYSV である。BSD UNIX サーバ上の各プリンタは、プリンタ構成ファイル - 通常 /etc/printcap で設定される。
printing
設定オプションにより、少なくともcommand
,lpq
command
,lprm
command
という3つの印刷関連のオプションがそのプリンタ共有に対して自動的に設定される。Samba をこれらの印刷形式が提供されていないシステム上で動作させている場合は、単純にこれらのオプションを個々に設定すればよい。7.2.3.2 printable
printable オプションは、共有がプリンタサービスであることを示すために、
yes
に設定しなければならない。このオプションが設定されていない場合、共有はディスク共有として扱われる。このオプションは以下のように設定する:[printer1] printable = yes7.2.3.3 printer
このオプションは、しばしば
printer
name
とも呼ばれ、共有が出力するサーバ上のプリンタ名を指定する。このオプションにデフォルト値はなく、明示的に設定ファイル中で指定する必要がある。これは、UNIXシステムがデフォルトのプリンタ名がlp
等になっている場合でも同様である。このオプションは以下のように設定する:[deskjet] printer = hpdkjet17.2.3.4 printer driver
printer
driver
オプションは、SambaがWindowsクライアントに対してプリンタを通知するのに用いる文字列を設定する。オプションが正しく設定されていると、Windows のプリンタの追加ウィザードはどのプリンタを用いるかを予め知ることができるので、ダイアログボックスが一つ少なくなる分だけ、エンドユーザのインストール作業が簡単になる。この文字列は、 図 7.9でプリンタの追加ウィザードが表示している文字列と対比される。例えば、Apple の LaserWriter は通常Apple
LaserWriter
という文字列、Hewlett Packard Deskjet 560C はHP
DeskJet
560C
Printer
という文字列を用いる。図 7.9: Windows 98 におけるプリンタの追加ウィザードのダイアログボックス
Samba でプリンタドライバを自動設定する方法については、この章の前半の Section 7.1.7, Automatically Setting Up Printer Driversで子細に記述されている。
7.2.3.5 printer driver file
このグローバルオプションは Windows 95/98 用のプリンタドライバ定義ファイルの位置を設定する。このファイルは Samba のプリンタを用いるクライアントにプリンタドライバを提供するために必要である。このオプションのデフォルト値は /usr/local/samba/lib/printers.def である。デフォルト値は、以下のようにして変更することができる:
[deskjet] printer driver file = /var/printers/printers.defこのオプションの詳細は、この章の前半の セクション 7.1.7で子細に記述されている。
7.2.3.6 printer driver location
このオプションは、Windows 95/98 用のプリンタドライバと定義ファイルが置かれている共有の位置を指定する。このパラメータにデフォルト値はない。位置に付いてはネットワークのパス名(monyo 訳注: UNC 形式)で記述することが可能である。一般的には以下のようにして、自分のマシン上の共有を指定する:
[deskjet] printer driver location = \\%L\PRINTER$このオプションについても、この章の前半の Section 7.1.7 で子細に記述されている。
7.2.3.7 lpq cache time
グローバルな
lpq
cache
time
オプションにより Samba が現在のプリンタの状況を記憶している秒数を設定することができる。この時間が過ぎると、Samba は lpq コマンド(もしくはlpq
command
オプションで指定した何らかのコマンド)を発行して状況を更新する。デフォルトは10秒であるが、多数のクライアントがあったり、lpq
command
の実行に非常に時間がかかっている場合は、この値を増加させることもできる。以下の例では、この時間を30秒に変更している:[deskjet] lpq cache time = 307.2.3.8 postscript
postscript
オプションにより、指定されたプリンタが送信されたすべてのデータを Postscript として扱うようになる。これは、各印刷ジョブの先頭行の最初に、%!
文字を置くことによって行なわれる。このオプションは、通常^D
(control-D or end-of-file mark) を PostScript ファイルの先頭に挿入してしまう PC を用いてる際に利用される。このオプションは、非 PostScript プリンタを PostScript プリンタにするものではない。このオプションのデフォルト値はno
である。この値は以下のようにして変更できる:[deskjet] postscript = yes7.2.3.9 print command, lpq command, lprm command, lppause command, lpresume command
これらのオプションにより、Samba がプリンタを制御したり、データを送信したりするときに、どういった UNIX のコマンドを利用するかが指定される。関係する UNIX コマンドは、 lpr (send to Line PRinter), lpq (List Printer Queue), lprm (Line printer ReMove) およびオプションであるが、 lppause, lpresume である。システムのデフォルトを変更する必要がある場合に備えて、Samba はこれらのコマンドに因んだオプションを提供している。一例として以下の場合を考えてみよう:
lpq command = /usr/ucb/lpq %pこれにより、
lpq command
に /usr/ucb/lpq が設定される。同様にlprm command = /usr/local/lprm -P%p %jでは、Samba がプリンタを削除するコマンドが /usr/local/lprm となり、
%j
変数を用いて、印刷ジョブの番号が提供される。これらのオプションのデフォルト値は
printing
オプションの値に依存する。 表 7.4 では printing オプション毎のデフォルト値を表示している。最も一般的な 印刷システムは BSD である。
表 7.4: 様々な printing コマンド毎のデフォルトのコマンド オプション
BSD, AIX, PLP, LPRNG
SYSV, HPUX
QNX
SOFTQ
print command
lpr -r -P%p %s
lp -c -d%p %s; rm %s
lp -r -P%p %s
lp -d%p -s %s; rm %s
lpq command
lpq -P%p
lpstat -o%p
lpq -P%p
lpstat -o%p
lprm command
lprm -P%p %j
cancel %p-%j
cancel %p-%j
cancel %p-%j
lppause command
lp -i %p-%j -H hold
(SYSV only)None None None lpresume command
lp -i %p-%j -H resume
(SYSV のみ)None None qstat -s -j%j -r
通常 Samba においてこれらのオプションを変更する必要はないが、
command
は例外である。このオプションは、印刷システムに-r
(印刷後にジョブを削除する) オプションのあるコマンドが存在しない場合、明示的に設定する必要がある場合がある。以下その場合の例である:/usr/local/lpr -P%p %s; /bin/rm %s少し工夫することで、これらの smb.conf のオプションはデバッグの目的に利用することも可能である
print command = cat %s >>/tmp/printlog; lpr -r -P%p %s一例をあげると、上記の設定はファイルが実際にSambaサーバに送信されたかどうかを確認することを可能とする。これによりすべての送信内容が /tmp/printlog ファイル中に格納される。
BSD の次に一般的な印刷システムとしては SYSV(System V) 形式の印刷システムや IBM の AIX や Hewlett-Packard の HP-UX 等幾つかの SYSV 系列の印刷システムがあげられる。これらのシステムには /etc/printcap ファイルが存在せず、代わりに
printcap
file
オプションにより、システムに適切な lpstat コマンドを指定する(monyo 訳注: printcap ファイルの誤りか?). これにより、Samba は lpstat コマンドからプリンタのリストを入手する。別の対策として、グローバルな設定オプションであるprintcap
name
にダミーの printcap ファイル名を指定することも可能である。後者の場合、ファイルには以下のような行が含まれている必要がある:lp|print1|My Printer 1 print2|My Printer 2 print3|My Printer 3各行は、プリンタ名とその別名を示す。この例の場合、最初の行のプリンタは
lp
,print1
,My
Printer
1
のいずれか利用者の好みの名前で呼ぶことが可能である。先頭の名前が Samba がプリンタ関連のコマンドを実行する際に%p
変数に代入される。Samba では、LPRNG (LPR New Generation) と PLP (Public Line Printer) という印刷システムも提供されている。これらはパブリックドメインで、オープンソースの印刷システムであり、ベンダが提供するソフトウェアの問題に対処するため、多くのサイトで用いられている。更に、SOFTQ と QNX リアルタイムオペレーティングシステムも、Samba によってサポートされている。
7.2.3.10 load printers
load
printers
オプションにより、Samba は すべての既知のプリンタに対する共有を作成し、それらをブラウズリストに載せるようになる。Samba は /etc/printcap (or system equivalent) 上の各プリンタ名毎にプリンタ共有を作成し、リストに追加する。例えば、 printcap ファイルが以下のようになっている場合:[2][2] このファイルを初めてみる読者のために、各行にコメントを付加した。
lp:\ :sd=/var/spool/lpd/lp:\# spool directory
:mx#0:\# maximum file size (none)
:sh:\# surpress burst header (no)
:lp=/dev/lp1:\# device name for output
:if=/var/spool/lpd/lp/filter:# text filter
laser:\ :sd=/var/spool/lpd/laser:\# spool directory
:mx#0:\# maximum file size (none)
:sh:\# surpress burst header (no)
:lp=/dev/laser:\# device name for output
:if=/var/spool/lpd/lp/filter:# text filter
以下のように指定することで:
load printers = yes
[lp]
と[laser]
の共有は、Samba の起動時に利用可能なプリンタ共有として自動的に作成される。両方の共有とも、設定オプションとして[printers]
セクションで指定されたものが用いられ、Samba サーバのブラウズリスト上にも表示される。7.2.3.11 printcap name
printcap
name
オプション(printcap
とも呼ばれる) がプリンタ共有に記述されていた場合、Samba はシステムのプリンタ構成ファイルとしてここで指定されたファイルを利用するようになる。このファイルは通常 /etc/printcap であるが、ネットワーク上で共有したいプリンタのみを含んだファイルに設定することも可能である。この値はサーバ上のプリンタ構成ファイルをさすフルパス名である必要がある:[deskjet] printcap name = /usr/local/printcap7.2.3.12 min print space
min
space
オプションは、印刷が行なわれる際に必要な最低のスプール領域のサイズを設定する。これをゼロ(デフォルト値)にした場合、チェックは行なわれない。それ以外の数値にした場合は、印刷時に必要なキロバイト単位の空きスペースとなる。このオプションにより、印刷ジョブがディスクの空き領域を喰い潰してしまい、他のプロセスにも影響が及ぶ事態を避けることができる:[deskjet] min print space = 40007.2.3.13 queuepause command
この設定オプションは、Samba に個々の印刷ジョブではなく、印刷キュー全体を一時停止させるコマンドを指定する。デフォルト値は printing type の指定に依存する。このオプションを変更する必要はないであろう。
7.2.3.14 queueresume command
この設定オプションは、Samba が印刷キュー上のあるジョブ単位ではなく、一時停止した印刷キューを再開させるコマンドを指定する。デフォルト値は printing type の指定に依存する。このオプションを変更する必要はないであろう。
© 1999, O'Reilly & Associates, Inc.