Clean up print queue script and implementation.

This commit is contained in:
Andreas B. Mundt 2023-11-11 10:05:47 +01:00
parent 70c45c477f
commit 5818c027ac
7 changed files with 43 additions and 42 deletions

View file

@ -52,7 +52,7 @@
ntp_serv: "{{ vault_ntp_serv }}" ## ntp.example.org ntp_serv: "{{ vault_ntp_serv }}" ## ntp.example.org
proxy: "{{ vault_proxy }}" ## http://firewall.example.org:3128 proxy: "{{ vault_proxy }}" ## http://firewall.example.org:3128
no_proxy: "{{ vault_no_proxy }}" ## firewall.example.org,server.example.org,idam.example.org,dw.example.org no_proxy: "{{ vault_no_proxy }}" ## firewall.example.org,server.example.org,idam.example.org,dw.example.org
printservers: "{{ vault_printservers }}" ## ['10.0.0.1','10.0.0.15'] printservers: "{{ vault_printservers }}" ## ['10.0.0.1', '10.0.0.15']
## PAM mount nextcloud, remove or leave empty to skip: ## PAM mount nextcloud, remove or leave empty to skip:
web_dav: "{{ vault_web_dav }}" ## https://nc.example.org/remote.php/dav/files/%(USER) web_dav: "{{ vault_web_dav }}" ## https://nc.example.org/remote.php/dav/files/%(USER)

View file

@ -9,8 +9,8 @@ file="${1:-$HOME/.local/share/user-places.xbel}"
[[ -e "$file" ]] || exit 0 [[ -e "$file" ]] || exit 0
if grep -q "Tausch\|Nextcloud" "$file" ; then if grep -q "Tausch\|Nextcloud" "$file" ; then
echo "Your Dolphin seems to already contain 'Tausch' and/or 'Nextcloud'." echo "Your Dolphin seems to already contain 'Tausch' and/or 'Nextcloud'." | tee "$file.lmn"
exit 0 exit 0
fi fi
id="$(grep ID "$file" | sed -E "s|^.+ID>([[:digit:]]+)/([[:digit:]]+)</ID.+$|\1:\2|" \ id="$(grep ID "$file" | sed -E "s|^.+ID>([[:digit:]]+)/([[:digit:]]+)</ID.+$|\1:\2|" \

View file

@ -1,2 +0,0 @@
smb_server: "server"
smb_share: "default-school/"

View file

@ -1,4 +1,3 @@
%examusers ALL=(root) NOPASSWD: /usr/local/bin/install-printers.sh %examusers ALL=(root) NOPASSWD: /usr/local/bin/install-printers.sh
%role-student ALL=(root) NOPASSWD: /usr/local/bin/install-printers.sh %role-student ALL=(root) NOPASSWD: /usr/local/bin/install-printers.sh
%role-teacher ALL=(root) NOPASSWD: /usr/local/bin/install-printers.sh %role-teacher ALL=(root) NOPASSWD: /usr/local/bin/install-printers.sh

View file

@ -1 +0,0 @@
[[ "${UID}" -gt 10000 ]] && sudo /usr/local/bin/install-printers.sh

View file

@ -1,5 +1,5 @@
--- ---
- name: Install cups and python libs - name: Install cups
apt: apt:
name: name:
- cups - cups
@ -18,13 +18,13 @@
state: stopped state: stopped
enabled: no enabled: no
- name: install install-printers.sh - name: Install install-printers.sh
template: template:
src: install-printers.sh.j2 src: install-printers.sh.j2
dest: /usr/local/bin/install-printers.sh dest: /usr/local/bin/install-printers.sh
mode: 0755 mode: 0755
- name: install lmn-install-printers sudoers - name: Install lmn-install-printers sudoers
copy: copy:
src: 90-lmn-install-printers src: 90-lmn-install-printers
dest: /etc/sudoers.d/ dest: /etc/sudoers.d/
@ -32,10 +32,8 @@
owner: root owner: root
group: root group: root
- name: install lmn-printer.sh in /etc/profile.d/ - name: Run printer script from /etc/profile.d/
copy: copy:
src: lmn-printer.sh dest: /etc/profile.d/lmn-printer.sh
dest: /etc/profile.d/ content: |
mode: 0644 [[ "${UID}" -gt 10000 ]] && (sudo /usr/local/bin/install-printers.sh > /dev/null &)
owner: root
group: root

View file

@ -3,34 +3,41 @@
set -eu set -eu
printservers="{{ printservers | join(' ') }}" printservers="{{ printservers | join(' ') }}"
hostname=$(hostname) hostgroup="$(id -Gn "${HOSTNAME^^}$")"
hostgroup=$(id -Gn "${hostname^^}$") usergroup="$(id -Gn "${SUDO_USER}")"
usergroup=$(id -Gn "${SUDO_USER}") installedprinters="$(lpstat -p | cut -f 2 -d" ")"
installedprinters=$(lpstat -p | cut -f 2 -d" " | sed -z 's/\n/ /g' )
echo "Hostgroups: ${hostgroup}" cat <<EOF
echo "Usergroups: ${usergroup}" Hostgroups: ${hostgroup}
echo "Installed Printers: ${installedprinters}" Usergroups: ${usergroup}
echo Local print queues:
${installedprinters}
for printer in $installedprinters; do EOF
if ! $(echo "${hostgroup}" | grep -w -q "${printer}") && ! $(echo "${usergroup}" | grep -w -q "${printer}") ; then
lpadmin -x "${printer}"
fi
done
for printserver in $printservers; do ## Remove all printers not wanted:
echo "checking Server: $printserver" for p in $installedprinters ; do
printers=$(lpstat -h "${printserver}" -U "${SUDO_USER}" -v | cut -f 3 -d" " | sed 's/:$//g' | sed -z 's/\n/ /g' ) if [[ ! "${hostgroup}" =~ "$p" ]] && [[ ! "${usergroup}" =~ "$p" ]] ; then
echo "Available Printers: $printers" echo "Removing print queue '$p'."
for printer in $printers; do lpadmin -x "$p"
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 fi
done
done done
## 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 everywhere || echo "Adding queue '$p' failed."
fi
fi
done
done