Se você definir sua entrada printcap
como:
lp:\
:ml#0:\
:mx#0:\
:sd=/var/spool/lpd/lp:\
:sh:\
:lp=/dev/null:\
:of=/var/output/capture:
Nesse caso, a entrada lp
aponta para /dev/null
e, portanto, nunca imprimirá nada.
A mágica está no filtro of
. É um script muito simples:
#!/bin/sh
DIR=/var/output/files
d='/bin/date +%Y-%m-%d_%H:%M:%S'
output=$DIR/$d.$$
cat > $output
chmod 644 $output
exit 0
Agora
mkdir /var/output/files
chown daemon /var/output/files
Neste ponto, podemos fazer algo como:
% echo this is a test | lpr
E é se por mágica:
% ls /var/output/files
2016-08-20_09:44:19.26541
% cat /var/output/files/2016-08-20_09\:44\:19.26541
this is a test
Você pode modificar o script para suas necessidades exatas.
(Eu testei isso no FreeBSD, que é a única máquina que ainda usa lpd
!)
Agora você tinha um filtro if
no original. if
é um "filtro de entrada" projetado para modificar o arquivo recebido para um formato normalizado. Não tenho certeza do que o mf_wrapper
("m format"?), Mas se você estiver vendo uma confusão em seus arquivos de saída, altere o printcap
para incluir o filtro if
original:
lp:\
:ml#0:\
:mx#0:\
:sd=/var/spool/lpd/lp:\
:sh:\
:lp=/dev/null:\
:of=/var/output/capture:\
:if=/usr/share/printconf/util/mf_wrapper:
Para arquivos com os quais "você está feliz", é possível enviá-los manualmente para outra fila de impressão com lpr -Prealqueue
ou similar.