Clean up print queue script and implementation.
This commit is contained in:
		
							parent
							
								
									70c45c477f
								
							
						
					
					
						commit
						5818c027ac
					
				
					 7 changed files with 43 additions and 42 deletions
				
			
		| 
						 | 
				
			
			@ -52,7 +52,7 @@
 | 
			
		|||
    ntp_serv: "{{ vault_ntp_serv }}"  ## ntp.example.org
 | 
			
		||||
    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
 | 
			
		||||
    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:
 | 
			
		||||
    web_dav: "{{ vault_web_dav }}"    ## https://nc.example.org/remote.php/dav/files/%(USER)
 | 
			
		||||
| 
						 | 
				
			
			@ -164,7 +164,7 @@
 | 
			
		|||
        name: rmlpr.timer
 | 
			
		||||
        enabled: false
 | 
			
		||||
      when: rmlpr.stat.exists
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
    - name: Remove deprecated files and directories
 | 
			
		||||
      file:
 | 
			
		||||
        path: "{{ item }}"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,8 +9,8 @@ file="${1:-$HOME/.local/share/user-places.xbel}"
 | 
			
		|||
[[ -e "$file" ]] || exit 0
 | 
			
		||||
 | 
			
		||||
if grep -q "Tausch\|Nextcloud" "$file" ; then
 | 
			
		||||
   echo "Your Dolphin seems to already contain 'Tausch' and/or 'Nextcloud'."
 | 
			
		||||
   exit 0
 | 
			
		||||
    echo "Your Dolphin seems to already contain 'Tausch' and/or 'Nextcloud'." | tee "$file.lmn"
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
id="$(grep ID "$file" | sed -E "s|^.+ID>([[:digit:]]+)/([[:digit:]]+)</ID.+$|\1:\2|" \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,2 +0,0 @@
 | 
			
		|||
smb_server: "server"
 | 
			
		||||
smb_share: "default-school/"
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,3 @@
 | 
			
		|||
%examusers 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
[[ "${UID}" -gt 10000 ]] && sudo /usr/local/bin/install-printers.sh
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
---
 | 
			
		||||
- name: Install cups and python libs
 | 
			
		||||
- name: Install cups
 | 
			
		||||
  apt:
 | 
			
		||||
    name:
 | 
			
		||||
      - cups
 | 
			
		||||
| 
						 | 
				
			
			@ -18,13 +18,13 @@
 | 
			
		|||
    state: stopped
 | 
			
		||||
    enabled: no
 | 
			
		||||
 | 
			
		||||
- name: install install-printers.sh
 | 
			
		||||
- name: Install install-printers.sh
 | 
			
		||||
  template:
 | 
			
		||||
    src: install-printers.sh.j2
 | 
			
		||||
    dest: /usr/local/bin/install-printers.sh
 | 
			
		||||
    mode: 0755
 | 
			
		||||
 | 
			
		||||
- name: install lmn-install-printers sudoers
 | 
			
		||||
- name: Install lmn-install-printers sudoers
 | 
			
		||||
  copy:
 | 
			
		||||
    src: 90-lmn-install-printers
 | 
			
		||||
    dest: /etc/sudoers.d/
 | 
			
		||||
| 
						 | 
				
			
			@ -32,10 +32,8 @@
 | 
			
		|||
    owner: root
 | 
			
		||||
    group: root
 | 
			
		||||
 | 
			
		||||
- name: install lmn-printer.sh in /etc/profile.d/
 | 
			
		||||
- name: Run printer script from /etc/profile.d/
 | 
			
		||||
  copy:
 | 
			
		||||
    src: lmn-printer.sh
 | 
			
		||||
    dest: /etc/profile.d/
 | 
			
		||||
    mode: 0644
 | 
			
		||||
    owner: root
 | 
			
		||||
    group: root
 | 
			
		||||
    dest: /etc/profile.d/lmn-printer.sh
 | 
			
		||||
    content: |
 | 
			
		||||
      [[ "${UID}" -gt 10000 ]] && (sudo /usr/local/bin/install-printers.sh > /dev/null &)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,34 +3,41 @@
 | 
			
		|||
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' )
 | 
			
		||||
hostgroup="$(id -Gn "${HOSTNAME^^}$")"
 | 
			
		||||
usergroup="$(id -Gn "${SUDO_USER}")"
 | 
			
		||||
installedprinters="$(lpstat -p | cut -f 2 -d" ")"
 | 
			
		||||
 | 
			
		||||
echo "Hostgroups: ${hostgroup}"
 | 
			
		||||
echo "Usergroups: ${usergroup}"
 | 
			
		||||
echo "Installed Printers: ${installedprinters}"
 | 
			
		||||
echo
 | 
			
		||||
cat <<EOF
 | 
			
		||||
Hostgroups: ${hostgroup}
 | 
			
		||||
Usergroups: ${usergroup}
 | 
			
		||||
Local print queues:
 | 
			
		||||
${installedprinters}
 | 
			
		||||
 | 
			
		||||
for printer in $installedprinters; do
 | 
			
		||||
  if ! $(echo "${hostgroup}" | grep -w -q "${printer}") && ! $(echo "${usergroup}" | grep -w -q "${printer}") ; then
 | 
			
		||||
    lpadmin -x "${printer}"
 | 
			
		||||
  fi
 | 
			
		||||
done
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
## Remove all printers not wanted:
 | 
			
		||||
for p in $installedprinters ; do
 | 
			
		||||
    if [[ ! "${hostgroup}" =~ "$p" ]] && [[ ! "${usergroup}" =~ "$p" ]] ; then
 | 
			
		||||
	echo "Removing print queue '$p'."
 | 
			
		||||
	lpadmin -x "$p"
 | 
			
		||||
    fi
 | 
			
		||||
  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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue