Máy in chia sẻ qua CUPS có thể in ấn từ xa mà không cần Samba.
Tương tự bài trước, chúng ta sẽ cài đặt một máy in ảo để in ra Fax nhờ vào CUPS. Việc cài đặt rất dễ dàng, hơn nữa, người ta còn tạo sẵn công cụ cài đặt có tên fax4CUPS. Chúng ta cũng sẽ tự tạo lấy một backend print to fax dùng cho lan cũng như cho wan gọi là cupsFAX.
Cài đặt cups
apt-get install cups
Cấu hình để có thể quản lý máy in từ xa
# Only listen for connections from the local machine. # Listen 127.0.0.1:631 Port 631 # Restrict access to the server... <Location /> Order allow,deny Allow @LOCAL </Location> # Restrict access to the admin pages... <Location /admin> Encryption Required Order allow,deny Allow @LOCAL </Location> # Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny Allow @LOCAL </Location> # Restrict access to log files... <Location /admin/log> AuthType Basic Require user @SYSTEM Order allow,deny Allow @LOCAL </Location>
Chuẩn bị một user có vai trò admin cho CUPS
adduser username lpadmin
Cài đặt fax4CUPS và cupsFAX
wget http://joonet.de/sources/fax4cups/debian/fax4cups_2.0-1_all.deb dpkp -i ./fax4cups_2.0-1_all.deb
fax4CUPS chép script hylafax vào /usr/lib/cups/backend/ và driver máy in hylafax.ppd vào /usr/share/ppd/fax4cups/ (thay vì /usr/share/cups/model/ như thông thường), sau đó tạo máy in.
Script backend hylafax được khai báo URI của thiết bị là hylafax:/local, hàm ý là Print to Fax chỉ dùng trên máy localhost, nơi cài đặt HylaFax và CUPS. Mặc dù có thể chia sẻ máy in qua Samba hay ipp… nhưng script không được thiết kế để đọc dữ liệu từ xa mà chỉ đọc dữ liệu từ lệnh in truyền vào backend.
Về cơ chế, cũng tương tự như lpd dùng input filter, CUPS dùng backend. Backend là bộ lọc cuối sau khi các bộ lọc khác tác động lên dữ liệu, mục đích là dữ liệu được chuyển sang dạng PS phù hợp với máy in. CUPS mặc định có nhiều bộ lọc hơn HylaFax, nên có thể chấp nhận file đầu vào thuộc nhiều định dạng hơn.
Khi thực hiện lệnh in qua lp, CUPS truyền cho backend 5 hay 6 tham số. Chúng ta có nhiệm vụ phân tích đầu vào để có số_fax cho lệnh sendfax.
jobId user title copies options [filename]
Chúng ta lợi dụng title hay options để truyền số_fax cho backend (-t số_fax hay -o phone=số_fax). Nếu chúng ta không can thiệp vào title, nơi đây sẽ là tên tài liệu fax. Vì vậy khi fax từ xa, chúng ta sẽ đặt số fax vào tên file.
In thử qua dòng lệnh, sau đó kiểm tra qua faxstat -s
lp -d cupsFAX -t số_fax_nhận file.ps
Trong đó lp đi theo gói CUPS.
Các tham số -t bên trên có thể thay bằng -o phone=số_fax_nhận
Cài đặt fax từ xa
1. Chia sẻ máy in qua Samba
Làm tương tự bài trước
2. Kết nối với máy in qua ipp
Add printer or Scanner -> The printer that I want isn't listed
-> Select a shared aprinter by name
-> Nhập http://my_domain:631/printers/tên_máy_in
-> Chọn driver máy in bất kỳ kết xuất ra PS
-> OK
- my_domain có thể là DDNS trỏ đến RPi và đã mở cổng 631 TCP/UDP cho RPi.
- tên_máy_in print to fax đã tạo trên RPi
- Có người nói nên chọn driver máy in mới để chắc chắn được hỗ trợ IPP. Tuy nhiên driver càng phức tạp tác vụ in càng chậm. Dirver Dell 3100 cn PS dùng PScript5.dll Version 5.2.2 để chuyển đổi file, in qua IPP khá nhanh.
Trong khi Samba chỉ có thể chia sẻ máy in trong mạng lan thì ipp có thể chia sẻ máy in qua mạng wan. Cả hai cách đều chưa có giải pháp ổn thỏa khi muốn truyền số fax.