Nur fuers Protokoll:
Am 04.02.'05 schrieb Michael Lestinsky:
> Ich verstehe jedoch nicht so ganz, was das soll.
So, ich habe jetzt einen Weg gefunden auf dem ich if-Eintraege fuer
Remote-Drucker verwenden kann:
Ich habe folgende /etc/printcap:
.----
| lp|fake:\
| :lp=/dev/null:sh:\
| :if=/usr/local/libexec/lp2_filter:\
| :sd=/var/spool/lpd/lp:lf=/var/log/lpd-errs:
| :mx=0:
|
| pcl|buero|HP Laserjet 4 Plus:\
| :lp=:sh:rm=149.217.5.150:rp=raw:\
| :sd=/var/spool/lpd/pcl:lf=/var/log/lpd-errs:\
| :mx=0:
`----
und /usr/local/libexec/lp2_filter macht folgendes:
.----
| #!/bin/sh
| # Michael Lestinsky, Feb 2005
|
| TMPFILE=`mktemp /tmp/pclout.XXXXXXXX`
| IFS="" read -r first_line
| first_two_chars=`expr "$first_line" : '\(..\)'`
|
| ( if [ "$first_two_chars" = "%!" ]; then
| /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sPAPERSIZE=a4 -sDEVICE=ljet4 \
| -sOutputFile=- - && exit 0
| exit 2
| else
| #
| # Plain text or HP/PCL, so just print it directly; print a form feed
| # at the end to eject the last page.
| #
| echo "$first_line" && cat && printf "\033&l0H" &&
| exit 0
| fi
| ) > $TMPFILE || exit 2
|
| lpr -Ppcl $TMPFILE
|
| rm $TMPFILE
| exit 0
`----
Es nimmt den Input an; wenn er als PS-Datei erkannt wird, wird gs mit ein
paar passenden Parametern fuer die Konvertierung aufgerufen um einen
PCL-Datenstrom zu erzeugen. Dieser Datenstrom wird per "lpr -Pbuero" neu
in einer anderen Queue gespoolt, wo er nicht mehr weiter gefiltert werden
muss. Durch den lp=/dev/null-Eintrag fuer die Queue "lp" habe ich den lpd
ausgetrickst und ihm einen lokalen Drucker vorgegaukelt.
Inspiriert hat mich dazu ein Slashdot-Artikel in dem beschrieben wurde,
wie "lpd" als MP3-Server umfunktioniert wurde.
Bye
Michael
--
Michael Lestinsky Max-Planck-Institut fuer Kernphysik
michael.lestinsky@mpi-hd.mpg.de Saupfercheckweg 1; 69117 Heidelberg
Phone +49 6221 516-504 Fax: -602 http://www.mpi-hd.mpg.de
Received on Mon Feb 7 14:28:21 2005