Di dalam skrip saya mengirim file tertentu untuk dicetak menggunakan lpr
perintah pada printer yang dipilih pengguna.
Daftar printer, dari mana pengguna memilih yang akan digunakan, saya bisa menggunakan lpstat -a
perintah dan kemudian mempertimbangkan semuanya sebelum ruang pertama sebagai nama printer.
Ini berfungsi tetapi sangat bergantung pada format output spesifik dari lpstat -a
perintah. Saya khawatir bahwa di masa depan (atau sekarang pada distribusi yang berbeda) jika format output berubah akan merusak skrip.
Jadi, apakah ada cara untuk mendapatkan nama-nama semua printer yang diinstal dengan cara yang lebih aman daripada yang saya gunakan?
sumber
Saya juga membutuhkan daftar printer dan memiliki keprihatinan yang sama. Mengikuti saran di atas saya memeriksa sumber lpstat.c. Saya mengharapkannya menjadi suid sehingga bisa membaca "/etc/cups/printers.conf". Saya sekarang sadar itu tidak melakukan ini.
Sebaliknya ia mengirim permintaan HTTP POST ke localhost: 631 di mana cupsd berjalan. Permintaan dalam bentuk Content-Type: application / ipp dan hal-hal seperti diminta-atribut auth-info-diperlukan. Alasan untuk tidak lebih spesifik adalah karena menggunakan pengkodean non-standar (lihat: http://en.wikipedia.org/wiki/Internet_Printing_Protocol ) ... jadi saya curiga sebenarnya menguraikan output lpstat -a sebenarnya lebih bersih .
sumber