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の出力を解析するのが本当にきれいだと思います。