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

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

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

ユーザーが使用するプリンタを選択するプリンタの一覧でこのlpstat -aコマンドを使用し、最初のスペースの前にあるすべての項目をプリンタ名として処理します。

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

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

答え1

また、プリンタのリストが必要であり、同じ懸念があります。上記の提案に従ってlpstat.cのソースを確認しました。 "/etc/cups/printers.conf"を読むことができるようにsuidになりたいです。それではダメだということをもう悟りました。

代わりに、cupdが実行されているlocalhost:631にHTTP POST要求を送信します。要求形式は、Content-Type:application / ippと要求属性auth-info-requiredなどのコンテンツです。より具体的ではないのは、非標準エンコーディングを使用するためです(参照:http://en.wikipedia.org/wiki/Internet_Printing_Protocol)...だからlpstat -aの出力を解析するのが本当にきれいだと思います。

答え2

コンピュータ支援システム(部分的に)GPLライセンスがあるので、直接入手できます。由来lpstat(1)そして自分だけのアプレットを作成します(GPLライセンス)マイプリンタリストを提供- データ出力方式を絶対に変更しないプログラム。

(1)にありますが、cups-XX/cups/systemv/lpstat.cそこにあるバージョン番号を理解できません。

答え3

もともと質問があって6年が経ちましたが、私はCups 2.2.7を使用しており、 "lpstat -a"はまだ最初の単語からプリンタ名を返します。したがって、インストールされているプリンタのリストをインポートする正しい方法が続くと仮定するのは安全だと思います。

関連情報