#!/usr/bin/bash set -eu printservers="{{ printservers | join(' ') }}" hostgroup="$(id -Gn "${HOSTNAME^^}$")" usergroup="$(id -Gn "${SUDO_USER}")" installedprinters="$(lpstat -p | cut -f 2 -d" ")" cat < "/lmn/media/${SUDO_USER}/.printerlist.csv" ## Add all printers needed: for ps in $printservers ; do echo "Checking print server '$ps' for available printers:" printers="$(lpstat -h "$ps" -U "${SUDO_USER}" -v | sed -E 's/^.+ (\w+): .+$/\1/')" echo -e "$printers\n" for p in $printers; do if [[ "${hostgroup}" =~ "$p" ]] || [[ "${usergroup}" =~ "$p" ]] ; then if [[ "$installedprinters" =~ "$p" ]] ; then echo "Print queue '$p' already available." else echo "Adding print queue '$p'." timeout 10 lpadmin -p "$p" -E -v \ "ipp://$ps/printers/$p" \ -m "driverless:ipp://$ps/printers/$p" || echo "Adding queue '$p' failed." fi echo "$p;ipp://192.168.122.1/printers/$p" >> "/lmn/media/${SUDO_USER}/.printerlist.csv" fi done done