Nhận danh sách các máy in được cài đặt


8

Bên trong tập lệnh tôi gửi một tập tin nhất định để in bằng lprlệnh trên máy in do người dùng chọn.

Danh sách các máy in, từ đó người dùng chọn một máy in để sử dụng, tôi nhận được bằng cách sử dụng lpstat -alệnh và sau đó xem xét mọi thứ trước không gian đầu tiên là tên của máy in.

Điều này hoạt động nhưng phụ thuộc rất nhiều vào định dạng đầu ra cụ thể của lpstat -alệnh. Tôi sợ rằng trong tương lai (hoặc bây giờ trên các bản phân phối khác nhau) nếu định dạng đầu ra thay đổi, nó sẽ phá vỡ tập lệnh.

Vì vậy, có cách nào để lấy tên của tất cả các máy in được cài đặt theo cách an toàn hơn so với cái tôi đang sử dụng không?

Câu trả lời:


1

CUPS là (một phần) được cấp phép GPL, vì vậy bạn chỉ cần lấy nguồn của lpstat(1) và tạo chương trình cho máy in của tôi (được cấp phép GPL) của riêng bạn sẽ không bao giờ thay đổi cách thức xuất dữ liệu .

(1) Đó là cups-XX/cups/systemv/lpstat.c, tôi chỉ không hiểu các số phiên bản ở đó.


Đây là một giải pháp tốt, nhưng thật không may, "tập lệnh" thực sự là một applet Java, tôi không thể thay đổi hệ thống đích hoặc cài đặt công cụ mới trên nó. Nó liên quan đến câu hỏi này: stackoverflow.com/questions/13743738/NH Và tôi nghĩ rằng sử dụng lpr thay vào đó là một ý tưởng hay
Enoon

Hmm, có CUPS4J , có thể hoặc không phải là một tùy chọn ... nó có thể "lấy các đối tượng máy in từ máy chủ CUPS có thể được sử dụng để in và giám sát công việc"
sr_

Đây có vẻ là một giải pháp liên tục, cảm ơn!
Enoon

3

Tôi cũng cần một danh sách các máy in và có cùng mối quan tâm. Theo gợi ý trên tôi đã kiểm tra nguồn của lpstat.c. Tôi đã mong đợi nó là một suid để nó có thể đọc "/etc/cups/printers.conf". Bây giờ tôi nhận ra nó không làm điều này.

Thay vào đó, nó sẽ gửi một yêu cầu POST HTTP đến localhost: 631 nơi cupsd chạy. Yêu cầu có dạng Content-Type: application / ipp và những thứ như thuộc tính được yêu cầu auth-information-required. Lý do không cụ thể hơn là nó sử dụng mã hóa không chuẩn (xem: http://en.wikipedia.org/wiki/INET_Printing_Protocol ) ... vì vậy tôi nghi ngờ thực sự phân tích cú pháp đầu ra của lpstat -a thực sự sạch hơn .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.