Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
| anwenderwiki:owncloud:schuljahreswechsel [2023/09/10 16:22] – [Noch nicht gelöschte Accounts anzeigen] tobias | anwenderwiki:owncloud:schuljahreswechsel [2023/09/10 16:24] (aktuell) – [Komplettes Skript vom Server aus] tobias | ||
|---|---|---|---|
| Zeile 92: | Zeile 92: | ||
| <code bash update_clouddata.sh> | <code bash update_clouddata.sh> | ||
| - | #!/bin/bash | + | # |
| + | # Copyright 2019-2023 Tobias Küchel < | ||
| + | # This piece of software is licensed under: | ||
| + | # SPDX-License-Identifier: | ||
| + | # ideas and pieces of this script from Max Führinger from the wiki | ||
| - | lmnservername=" | + | ## no command line arguments: your cloudserver should be configured here: |
| - | nextcloudservername="cleese" | + | cloudserver="cloud-ext" |
| - | occ="/ | + | ## path to the occ command on the cloudserver |
| + | occcmd="/ | ||
| + | phpcmd=" | ||
| + | ## path to the data directory on the cloud server | ||
| data="/ | data="/ | ||
| + | ## list of directories on $data/ which should not be considered for deletion | ||
| + | excludelist=" | ||
| - | if [ `hostname` = "$lmnservername" ]; then | + | ## kopiere dieses Script auf den Cloudserver |
| - | echo "copying | + | if [ `hostname |
| - | scp $0 ${nextcloudservername}: | + | echo "Kopiere dieses Script |
| - | ssh -t ${nextcloudservername} | + | scp $0 $cloudserver:$0 |
| + | ssh -t $cloudserver | ||
| exit 0 | exit 0 | ||
| fi | fi | ||
| - | hardlist=`mktemp` | + | ############################################################################################## |
| + | homelist=`mktemp` | ||
| pv --version > /dev/null | pv --version > /dev/null | ||
| if [ $? -ne 0 ] ; then | if [ $? -ne 0 ] ; then | ||
| - | apt install pv | + | apt install pv bc |
| fi | fi | ||
| - | echo -n "Erstelle Liste: " | + | simulate="" |
| - | ls $data | grep -v " | + | if [ " |
| - | echo `cat /tmp/userlist | + | echo " |
| + | simulate=" | ||
| + | fi | ||
| + | ### Zeige, frage und lösche alle User, die nicht mehr im LDAP sind: | ||
| + | echo -n "Users scheinbar nicht mehr im LDAP: " | ||
| + | $phpcmd $occcmd ldap:show-remnants | ||
| + | if [ -s / | ||
| + | | ||
| - | echo "Checke, ob User noch in LDAP sind:" | + | lines=$(cat / |
| - | for i in `cat /tmp/userlist` ; do | + | lines=$(echo "$lines * 2" |
| - | | + | |
| - | # not a local user? | + | |
| - | if ! sudo -u www-data php $occ user:info "$i" | + | |
| - | echo " | + | done | pv -l -s $lines |
| - | fi | + | $phpcmd $occcmd ldap:show-remnants |
| - | else | + | if ! diff / |
| - | echo -n " | + | echo "HUCH. Bitte starte das Programm nochmal. Es schienen beim ersten Durchlauf LDAP-User nicht zu existieren, die nach einen Check doch existieren!\ |
| + | " | ||
| + | exit 0 | ||
| fi | fi | ||
| - | done | pv -s `cat / | ||
| - | echo -n "Users nicht mehr im LDAP:" | + | |
| - | sudo -u www-data php / | + | [[ -n $simulate ]] && echo "SIMULATION: würde in keinem Fall etwas löschen!" |
| - | if [ -s / | + | echo -n " |
| - | cat / | + | |
| - | echo " | + | |
| read | read | ||
| if [ " | if [ " | ||
| - | for i in `cat / | + | for i in `cat / |
| - | | + | |
| - | done | + | $simulate $phpcmd $occcmd |
| + | done | ||
| fi | fi | ||
| else | else | ||
| echo " | echo " | ||
| fi | fi | ||
| + | ### Erstelle eine Liste an Usern mit Dateien in der Cloud | ||
| + | echo -n " | ||
| + | ls $data | grep -v " | ||
| + | echo `cat / | ||
| - | echo -n "Users in $hardlist, deren Home gelöscht werden könnte $data:" | + | ### Erstelle die Liste aller User mit Dateien, die nicht mehr im LDAP sind |
| - | if [ -s $hardlist | + | echo " |
| - | cat $hardlist | + | for i in `cat / |
| + | ## not an LDAP user? | ||
| + | if $phpcmd $occcmd ldap: | ||
| + | # not a local user? | ||
| + | if ! $phpcmd $occcmd user:info " | ||
| + | ## then add him to the list | ||
| + | echo " | ||
| + | fi | ||
| + | ## echo one byte | ||
| + | echo -n " | ||
| + | else | ||
| + | ## echo one byte | ||
| + | echo -n " | ||
| + | fi | ||
| + | done | pv -s `cat / | ||
| + | ### Zeige, frage und lösche alle User, die scheinbar noch Dateien in der Nextcloud haben | ||
| + | echo -n "Users in $homelist, deren Home gelöscht werden könnte $data: " | ||
| + | if [ -s $homelist | ||
| + | cat $homelist | ||
| + | [[ -n $simulate ]] && echo " | ||
| echo " | echo " | ||
| read | read | ||
| if [ " | if [ " | ||
| - | for i in `cat $hardlist`; do | + | for i in `cat $homelist`; do |
| - | | + | |
| done | done | ||
| fi | fi | ||
| Zeile 157: | Zeile 198: | ||
| echo " | echo " | ||
| fi | fi | ||
| + | exit 0 | ||
| + | rm / | ||
| + | rm / | ||
| + | rm $homelist | ||
| + | |||
| + | |||
| </ | </ | ||
| + | |||
| + | |||