Rename instead of delete outdated exam-user directories on localhome-clients

Exam mode don't collect home-directories on localhome clients.
Deleting home of exam-users will result in potential data loss. But keeping
the home under the same name will prevent new exam at the next day.

Solution: Rename home (and /lmn/media/) of user after 12h and delete after 10d.
This commit is contained in:
Raphael Dannecker 2025-01-22 09:40:27 +01:00
parent 727922f152
commit 39da308ff7
3 changed files with 27 additions and 4 deletions

View file

@ -0,0 +1,16 @@
#!/usr/bin/bash
#
# rename -exam directories in /home and /lmn/media older than 12h
# remove -exam.* directories in /home and /lmn/media older than 10d
#
set -eu
for dir in /home/ /lmn/media ; do
if [[ -d "${dir}" ]]; then
find "${dir}" -maxdepth 1 -mindepth 1 -name '*-exam' -type d -cmin +720 \
-exec bash -c 'mv "$0" "$0".$( date +%Y%m%d-%H%M --reference="$0" )' {} \;
find "${dir}" -maxdepth 1 -mindepth 1 -name '*-exam.*' -type d -cmin +14400 \
-exec rm -rf {} \;
fi
done

View file

@ -1,6 +1,6 @@
[Unit]
Description=Remove -exam homes older than 12h
Description=Rename/Remove -exam directories older than 12h/10d
[Service]
Type=simple
ExecStart=find /home/ -maxdepth 1 -mindepth 1 -name '*-exam' -type d -cmin +720 -exec rm -rf {} \;
ExecStart=/usr/local/sbin/rmexam

View file

@ -34,8 +34,15 @@
content: |
[[ "${UID}" -gt 10000 ]] && ! findmnt "/lmn/media/${USER}/home" > /dev/null && exit 0
- name: Provide rmexam script
ansible.builtin.copy:
src: rmexam
dest: /usr/local/sbin/
mode: 0755
when: "'teacherlaptop' not in group_names"
- name: Provide rmexam services and timers for some scripts
copy:
ansible.builtin.copy:
src: "{{ item }}"
dest: "/etc/systemd/system/{{ item }}"
mode: 0644
@ -45,7 +52,7 @@
when: "'teacherlaptop' not in group_names"
- name: Enable rmexam.timer
systemd:
ansible.builtin.systemd:
name: rmexam.timer
enabled: true
when: "'teacherlaptop' not in group_names"