Como fazer com que a impressora matricial imprima cada linha de 'tail -f'

5

Eu tenho uma impressora matricial, uma Epson LQ-500.

Funciona bem com o CUPS, e eu o uso para imprimir listas às vezes, arquivos de texto, etc.

agora, gostaria de usá-lo como uma impressora de registro. para isso, eu preciso imprimir uma linha, quando ela é anexada a um arquivo ou pipe nomeado.

Eu estava pensando em usar algo assim:

tail -n1 -f file | lpr -l -h -P Epson-LQ-500

mas não funciona, o trabalho de impressão é mantido constantemente. Então eu tentei isso:

tail -n1 -f file | lp -d Epson-LQ-500 -o raw -H immediate

e também não funciona, o trabalho de impressão é mantido indefinidamente.

Ao usar tail sem -f ou ao usar cat , tudo funciona bem, mas o CUPS não permite que seja impresso linha por linha.

Então, como faço isso?

    
por polemon 14.12.2011 / 20:44

4 respostas

1

Eu meio que contornei esse problema com isso:

tail -n2 -f file | while read line
do
echo $line | lpr -l -h -P Epson-LQ-500
done

mas não tenho certeza se esta é a melhor prática.

    
por 15.12.2011 / 00:25
3

O sistema CUPS é um spooler de impressora (isto é, ele pressupõe que a impressora é compartilhada; ele coleta o material a ser impresso e o envia para a impressora somente quando terminado, para não para atrasar as impressões de outras pessoas quando você envia um cabeçalho de página, faz meia hora de computação e depois imprime o resto).

A maneira mais fácil de resolver isso seria enviar a saída diretamente para o dispositivo da impressora (isso provavelmente significa primeiro convencer o CUPS de que deve deixá-lo em paz e garantir que a impressora entenda o texto enviado).

    
por 16.01.2013 / 01:57
3
tail -f file > /dev/lp0

assumindo uma impressora paralela e permissões apropriadas, e você não pode compartilhar a impressora.

    
por 02.12.2013 / 15:53
1
tail -n2 -f file | while read line
do
    echo $line | lpr -l -h -P Epson-LQ-500
done

Impressoras de linhas antigas são ótimas por causa de sua proximidade; quando um personagem é descartado / dev / lp0 , ele vai direto para o papel que não pode ser copiado.

Se você estava seguindo esse arquivo para capturar uma intrusão (ou uma falha do sistema), adicionou o atraso e a insegurança das linhas que passam por mais e mais etapas de software - o shell, o lpr, os filtros da impressora - antes de chegarem adicionado à página.

Se o computador travar ou a energia acabar ou alguém hackear o lpr, a impressora não conseguirá registrar o evento com precisão.

Para coisas não críticas, isso é ótimo se fornecer outras conveniências; Eu uso impressoras de linha antiga para imprimir etiquetas uma de cada vez (impressoras a laser exigem que eu imprima uma folha inteira).

Se é hora ou coisas críticas de segurança que estão indo para a impressora, use

tail -f file > /dev/lp0

(embora se for realmente informação crítica você precisa logar no papel, você poderia ignorar o shell e o sistema de arquivos completamente no kernel.)

As impressoras de linha tradicionais não precisam de nenhum driver para imprimir texto simples em tempo real.

    
por 11.03.2018 / 15:16