10.4 ネットワークプリンタ

ネットワークプリンタは、さまざまなプロトコルをサポートできますし、その複数を同時にサポートすることも可能です。サポートされているプロトコルのほとんどは標準化されたものですが、いくつかのメーカはその標準に拡張(変更)を加えました。それらのメーカは標準を正しく実装していないシステムのテストや、標準では使用できない特定の機能を提供することを望んでいます。そのような場合、メーカは少数のオペレーティングシステム用にのみドライバを提供し、自社のシステムにつきまとう課題を排除します。残念なことに、Linuxドライバはめったに提供されません。現在の状況では、あらゆるプロトコルがLinux環境で円滑に動作するという仮定に基づいて行動することはできません。したがって、機能する設定を実現するために、さまざまなオプションを実験する必要があります。

CUPSはsocketLPDIPP、およびsmbの各プロトコルをサポートしています。

socket

socketは、データのハンドシェイクを最初に行うことなく、データをインターネットソケットへ送信する接続を意味します。一般的に使用されるsocketのポート番号のいくつかは、9100または35です。デバイスURI (uniform resource identifier)の構文は、socket://プリンタのIP:ポートです。たとえば、socket://192.168.2.202:9100/のようになります。

LPD (line printer daemon、ラインプリンタデーモン)

実証されてきたLPDプロトコルは、RFC1179で説明されています。このプロトコルを使用する場合、プリンタキューのIDのようなジョブ関連データの一部は、実際の印刷データより先に送信されます。したがって、データを送信するために、LPDプロトコルを設定する際にプリンタキューを指定する必要があります。さまざまなプリンタメーカによる実装は、プリンタキューとして任意の名前を受け入れる柔軟性を備えています。必要に応じて、使用可能な名前がプリンタのマニュアルに提示されています。多くの場合、LPT、LPT1、LP1、または他の類似した名前が使用されています。CUPSシステムを採用している他のLinuxホストまたはUnixホスト上で、LPDキューを設定することもできます。LPDサービスが使用するポート番号は515です。デバイスURIの例は、lpd://192.168.2.202/LPT1です。

IPP (Internet Printing Protocol、インターネット印刷プロトコル)

IPPは比較的新しい(1999年)プロトコルであり、HTTPプロトコルに基づいています。IPPを使用する場合、他のプロトコルより、ジョブとの関連性が高いデータが送信されます。CUPSは、IPPを使用して内部のデータ送信を行います。これは、2台のCUPSサーバ間でキューを転送する上で優先されるプロトコルです。IPPを正しく設定するには、印刷キューの名前は必須です。IPPのポート番号は631です。デバイスURIの例は、ipp://192.168.2.202/psおよびipp://192.168.2.202/printers/psです。

SMB (Windows共有)

CUPSは、Windows共有に接続されたプリンタへの印刷もサポートしています。この目的で使用されるプロトコルは、SMBです。SMBは、ポート番号137138、および139を使用します。デバイスURIの例は、smb://user:password@workgroup/smb.example.com/printersmb://user:password@smb.example.com/printer、およびsmb://smb.example.com/printerです。

設定を行う前に、プリンタがサポートしているプロトコルを決定する必要があります。必要な情報をメーカが提供していない場合、nmapコマンド(nmapパッケージ)を使用して、プロトコルを推定します。nmapは、ホストでオープンしているポートを確認します。たとえば、次のようにします。

nmap -p 35,137-139,515,631,9100-10000 printerIP

10.4.1 コマンドラインツールによるCUPS設定

YaSTでのCUPSオプションとは別に、ネットワークプリンタの設定時にlpadminlpoptionsなどのコマンド ラインツールを使ってCUPSを設定することができます。バックエンド(パラレルなど)とパラメータで構成されるデバイスURIが必要です。システム上の有効なデバイスURIを決定するには、コマンドlpinfo -v | grep ":/"を使用します。

# lpinfo -v | grep ":/"
direct usb://ACME/FunPrinter%20XL
direct parallel:/dev/lp0

lpadminで、CUPSサーバ管理者の追加、削除、またはクラスおよび印刷キューの管理ができます。プリントキューを追加するには、次の構文を使用します。

lpadmin -p queue -v device-URI -P PPD-file -E

このデバイス(-v)は、指定したPPDファイル(-P)を使用して、queue (-p)として使用できます。プリンタを手動で設定する場合は、このPPDファイルとデバイスのURIを把握しておく必要があります。

-Eは、最初のオプションとして使用しないでください。どのCUPSコマンドでも、-Eを最初の引数として使用した場合、暗号化接続を使用することを暗示的に意味します。プリンタを使用可能にするには、次の例に示す方法で-Eを使用する必要があります。

lpadmin -p ps -v parallel:/dev/lp0 -P \
/usr/share/cups/model/Postscript.ppd.gz -E

ネットワークプリンタの設定例:

lpadmin -p ps -v socket://192.168.2.202:9100/ -P \
/usr/share/cups/model/Postscript-level1.ppd.gz -E

lpadminのオプションの詳細は、lpadmin(1)のマニュアルページを参照してください。

プリンタのセットアップ時には、一部のオプションがデフォルトとして設定されています。これらのオプションは、各印刷ジョブ用に変更できます(使用される印刷ツールに依存)。YaSTを使用して、これらのデフォルトオプションを変更することもできます。コマンドラインツールを使用して、デフォルトオプションを次のように設定します。

  1. 最初に、すべてのオプションを列挙します。

    lpoptions -p queue -l

    例:

    Resolution/Output Resolution: 150dpi *300dpi 600dpi

    アクティブになったデフォルトオプションは、先頭にアスタリスク(*)が付いています。

  2. 次のようにlpadminを使用してオプションを変更します。

    lpadmin -p queue -o Resolution=600dpi
  3. 新しい設定値の確認:

    lpoptions -p queue -l
    
    Resolution/Output Resolution: 150dpi 300dpi *600dpi

標準ユーザがlpoptionsを実行すると、設定が~/.cups/lpoptionsに書き込まれます。ただし、root設定は/etc/cups/lpoptionsに書き込まれます。