インストールされているプリンターのリストを取得する


8

スクリプト内でlpr、ユーザーが選択したプリンターでコマンドを使用して印刷する特定のファイルを送信します。

ユーザーが使用するプリンターを選択するプリンターのリストです。lpstat -aコマンドを使用して、最初のスペースより前のすべてをプリンターの名前と見なしています。

これは機能しますが、lpstat -aコマンドの特定の出力形式に大きく依存します。将来(または現在、別のディストリビューション)で、出力形式が変更された場合、スクリプトが壊れると思います。

それで、私が使用しているものよりも安全な方法で、インストールされているすべてのプリンターの名前を取得する方法はありますか?

回答:


1

CUPSは(部分的に)GPLライセンスなのでlpstat(1)のソースを取得し、独自の小さな(GPLライセンスの)give-my-list-of- printers-プログラムを作成して、データの出力方法を変更することはありません。

(1)cups-XX/cups/systemv/lpstat.cありますが、バージョン番号がわかりません。


これは良い解決策ですが、残念ながら「スクリプト」は実際にはJavaアプレットです。ターゲットシステムを変更したり、新しいシステムをインストールしたりすることはできません。これは、この質問に関連しています:stackoverflow.com/questions/13743738/...と私は代わりにLPRを使用すると、良いアイデアだと思った
Enoon

うーん、ありますCUPS4Jまたはオプションをではないかもしれません...それは可能かもしれない、「モニターのジョブを印刷するために使用することができますCUPSサーバからプリンタオブジェクトを取得する」
sr_

これは解決策のようです、ありがとう!
Enoon

3

プリンターのリストも必要でしたが、同じ懸念がありました。上記の提案に従って、lpstat.cのソースを確認しました。"/etc/cups/printers.conf"を読み取れるように、それがsuidであると期待していました。私は今それがこれを行わないことに気づきました。

代わりに、cupsdが実行されるlocalhost:631にHTTP POSTリクエストを送信します。リクエストの形式はContent-Type:application / ippであり、requested-attributes auth-info-requiredなどです。より具体的にならない理由は、非標準のエンコーディングを使用しているためです(http://en.wikipedia.org/wiki/Internet_Printing_Protocolを参照)...したがって、実際にlpstat -aの出力を解析する方がきれいだと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.