#! /bin/bash # This script runs a daemon that listens on a port for printjobs and pipes # incoming data into UNIX lpd, which starts a helper program when a print- # job is incoming. USER="manuel" BUSYBOX="busybox" IP="0.0.0.0" PORT="515" SPOOLDIR="/var/spool" SPOOLQUEUE="STANDARD" # SHALL BE UNNECESSARY HENCE printerd RUNS IN USERCONTEXT ## If there are more than 1 seats open, quit #if [ $(loginctl list-seats) != "seat0" ]; then # exit #fi # ## Get the name(s) of the users physically using the machine #NAME=$( loginctl | awk '$3 !~ /root/, $4 ~ /seat0/ { print $3 }' | sort -u ) # ## Print error in case of multiple users #if (( $(echo $NAME | wc -w ) > 1 )) ; then # echo "[$0] To many users on this seat. Usernames: $NAME" > /tmp/debug-report/printer # exit #fi # Create the directory for the queue mkdir -p "$SPOOLDIR/$SPOOLQUEUE" # Change the owner of the directory such that lpd # is able to write to it chown $USER:$USER "$SPOOLDIR/$SPOOLQUEUE" # Start the lpdaemon listening on the given port "$BUSYBOX" tcpsvd -Eu "$USER:$USER" "$IP" "$PORT" \ "$BUSYBOX" lpd "$SPOOLDIR" sh -c 'printerGUI ms1144 $DATAFILE' &