#!/usr/bin/bash set -eu printservers="{{ printservers | join(' ') }}" hostname=$(hostname) hostgroup=$(id -Gn "${hostname^^}$") usergroup=$(id -Gn "${SUDO_USER}") installedprinters=$(lpstat -p | cut -f 2 -d" " | sed -z 's/\n/ /g' ) echo "Hostgroups: ${hostgroup}" echo "Usergroups: ${usergroup}" echo "Installed Printers: ${installedprinters}" echo for printer in $installedprinters; do if ! $(echo "${hostgroup}" | grep -w -q "${printer}") && ! $(echo "${usergroup}" | grep -w -q "${printer}") ; then lpadmin -x "${printer}" fi done for printserver in $printservers; do echo "checking Server: $printserver" printers=$(lpstat -h "${printserver}" -U "${SUDO_USER}" -v | cut -f 3 -d" " | sed 's/:$//g' | sed -z 's/\n/ /g' ) echo "Available Printers: $printers" for printer in $printers; do if $(echo "${hostgroup}" | grep -w -q "${printer}") || $(echo "${usergroup}" | grep -w -q "${printer}") ; then if ! $(echo "${installedprinters}" | grep -w -q "${printer}"); then echo "Adding ${printer}" timeout 10 lpadmin -p "${printer}" -E -v "ipp://${printserver}/printers/${printer}" -m everywhere || echo "Printer ${printer} could not be added" installedprinters+=" ${printer}" fi fi done done