So have you ever used a web printer and it was great?
Yeah, me neither. It’s probably possible on windows, but try to add more than one OS to the network and it’s horrible. And actually printing is a major pain in Linux anyway. Theoretically ‘lp’ and the like have no problem with remote printers, but I wanted something I understood. So today I’m going to post my setup I use instead.
I have a computer physically connected to the printer. Let’s call it ‘printserver’. On that server there is a folder, /printme, which is constantly monitored by inode. Any file added to that directory is printed.
Suppose I downloaded cutecats.pdf and I want to print it. Then I run:
scp cutecats.pdf printserver:/printme
And voila, the cute cats get printed.
Here’s the setup for the server:
- Get the printer to work. This is the hard step.
- Make a directory /printme. Add any missing users, add a new group called ‘print’ and add everyone who needs to print to that, etc.
- Set up /printme to be a tmpfs with the sticky bit set. (So we don’t fill up the hard drive)
/etc/fstab tmpfs /printme tmpfs rw,nodev,nosuid,noexec,uid=nobody,gid=print,mode=1770,size=1G 0 0
- Install incron and add this to the incrontab (of user ‘print’ or ‘sudo’):
# incrontab -l /printme IN_CLOSE_WRITE,IN_MOVED_TO lp $@/$#
Note that this will preserve files after they’re printed, because my server is low-volume enough I don’t need to care.