Printserver
Der Rechner ist zunächst einmal Printserver.
Auf dem Nameserver wird ein cname Record für "!printserver" eingerichtet, welcher auf diesen separaten Rechner zeigt.
ScanStation
Der Rechner fungiert gleichzeitig als Scan-Station. Dazu wurde er mit Sane eingerichtet.
Auf dem Nameserver wird ein cname Record für "ScanStation" eingerichtet, welcher auf diesen separaten Rechner zeigt.
CopyCenter
Das CopyCenter stellt folgende Dienste zur Verfügung: Scannen, Kopieren, Faxen, Scan als E-Mail weiterleiten.
Das CopyCenter wird so eingerichtet, dass es beim Starten der Maschine automatisch verfügbar ist und auf Tastatureingaben wartet. Tastatureingaben sind soz. "polnisch" notiert: Erst kommen die Werte und dann der Operator in Form einer kurzen (i.d.R. einbuchstabigen) Zeichenkette.
Das Startscript in /etc/init.d/copycenter
case "$1" in start) /usr/local/bin/copycenter >/dev/tty1 </dev/tty1 2>&1 & ;; stop|reload|restart|force-reload) ;; *) echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
Dazu muss in /etc/inittab das erste Terminal entfernt werden:
.... #1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 ....
Und hier nun /usr/local/bin/copycenter
trap ende 0 15 FAXSAMMELDIR=/var/tmp/copycenter.$$ RESOL=200 SCANCNT=0 SCANMODE=lineart SCANCMD="scanimage -d umax:/dev/scanner --format tiff -l 0 -t 0 -x 215.9 -y 297.18 --resolution $RESOL --mode" TOPSCMD="convert -density $RESOL tiff:- ps:-" sw_copy() { SCANMODE=lineart $SCANCMD $SCANMODE | $TOPSCMD | lp -d canon } col_copy() { SCANMODE=color $SCANCMD $SCANMODE | $TOPSCMD | lp -d canon_farbe } stop_printing() { for j in `lpstat -o | awk '{print $1}'`; do cancel $j done } sammelfax() { SCANMODE=lineart $SCANCMD $SCANMODE | $TOPSCMD >$FAXSAMMELDIR/cc.$SCANCNT.ps SCANCNT=`expr $SCANCNT + 1` } checksammelfax() { test $SCANCNT -eq 0 && sammelfax } mail_it() { checksammelfax gs -dNOPAUSE -dBATCH -q -sDEVICE=pdfwrite -sOutputFile=- $FAXSAMMELDIR/*.ps | \ cat >$FAXSAMMELDIR/cc.pdf echo "Mail vom CopyCenter - viele Gruesse " | \ mutt -a $FAXSAMMELDIR/cc.pdf -s "CopyCenter-Mail" `expr $1 : '\(.*\)m'` mksammeldir SCANCNT=0 } print_it() { checksammelfax gs -dNOPAUSE -dBATCH -q -sDEVICE=pswrite -sOutputFile=- $FAXSAMMELDIR/*.ps | \ lp -d canon mksammeldir SCANCNT=0 } fax_it() { checksammelfax gs -dNOPAUSE -dBATCH -q -sDEVICE=pswrite -sOutputFile=- $FAXSAMMELDIR/*.ps | \ sendfax -h faxserver -f faxmaster -n -D -i CopyCenter-Fax -d `expr $1 : '\([0-9]*\)f'` mksammeldir SCANCNT=0 } hilfe() { grep ";; [#]" $0 | sed 's|[^*]*\*\([^)]*\)).*;;.*#\(.*\)|\1\t\2|' | sed 's|\[[A-Z]\([a-z]\)\]|\1|g' } printercleaning() { /usr/local/bin/tpconfig.input4cleaning >/dev/null } mksammeldir() { test -d $FAXSAMMELDIR || mkdir $FAXSAMMELDIR for file in $FAXSAMMELDIR/*; do rm -f $file done } ende() { test -d $FAXSAMMELDIR && rm -rf $FAXSAMMELDIR } mksammeldir while read inp; do case $inp in *[Cc][Cc]) col_copy ;; # Farbkopie *[Cc]) sw_copy ;; # Schwarzweiss-Kopie *[Dd][Pp]) printercleaning ;; # Druckkopf reinigen *[Ff][Kk]) col_copy ;; # Farbkopie *[Ff]) fax_it $inp ;; # Fax an Nummer 01234567 *[Hh]) hilfe ;; # diese Hilfe *[Kk]) sw_copy ;; # Schwarzweiss-Kopie *[Mm]) mail_it $inp ;; # verschicke Mail *[Pp]) print_it $inp ;; # drucke die Scansammlung *[Qq]) halt ;; # Rechner herunterfahren *[Rr]) reboot ;; # Rechner neu starten *[Ss][Pp]) stop_printing ;; # alle Druckauftraege stoppen *[Ss]) sammelfax ;; # scannen und zum Faxen ablegen *[Xx]) ;; # Kommando nicht ausfuehren esac done
Einige Punkte sind deutlich installationsspezifisch (Scankommando, Druckkopfreinigung, ...). Direkt adaptierbar ist die Chose also nicht für beliebige Konfigurationen, aber als Ideenlieferant vielleicht brauchbar.
Wenn man "h" (wie Hilfe) drückt, dann gibt das CopyCenter folgende Informationen aus:
cc Farbkopie c Schwarzweiss-Kopie dp Druckkopf reinigen fk Farbkopie f Fax an Nummer 01234567 h diese Hilfe k Schwarzweiss-Kopie m verschicke Mail p drucke die Scansammlung q Rechner herunterfahren r Rechner neu starten sp alle Druckauftraege stoppen s scannen und zum Faxen ablegen x Kommando nicht ausfuehren
Nanu? Warum das "x"? Ganz einfach: Ich habe an dem Rechner keinen Monitor dran. Wenn ich also nicht sicher bin, was ich getippt habe, tippe ich "x<return>", alle Eingaben sind vergessen und ich kann von vorne anfangen.
Das Ganze ist noch nicht perfekt, insbesondere scheint mir das I/O-Handling des Shell-Scripts noch nicht sauber zu sein. Jedenfalls bleibt die Kiste das eine oder andere Mal hängen. Auch die Mailfunktionalität ist irgendwie nicht so zuverlässig, obwohl unser Mailserver als relay-Host eingetragen ist.