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 0Dazu 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
doneEinige 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.