Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:owncloud:schuljahreswechsel]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
anwenderwiki:owncloud:schuljahreswechsel [2023/09/10 16:22] – [Noch nicht gelöschte Accounts anzeigen] tobiasanwenderwiki: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+#!/bin/bash                                                                                                                                                    
 +# Copyright 2019-2023 Tobias Küchel <devel@zukuul.de>                                                                                                          
 +# This piece of software is licensed under:                                                                                                                    
 +# SPDX-License-Identifier: GPL-3.0-or-later                                                                                                                    
 +# ideas and pieces of this script from Max Führinger from the wiki                                                                                            
  
-lmnservername="server" +## no command line arguments: your cloudserver should be configured here:                                                                                      
-nextcloudservername="cleese+cloudserver="cloud-ext
-occ="/opt/nextcloud/occ"+## path to the occ command on the cloudserver                                                                                                                  
 +occcmd="/opt/nextcloud/occ" 
 +phpcmd="sudo -u www-data php --define apc.enable_cli=1" 
 +## path to the data directory on the cloud server                                                                                                             
 data="/srv/nextcloud/data" data="/srv/nextcloud/data"
 +## list of directories on $data/ which should not be considered for deletion                                                                                  
 +excludelist="(appdata|files_external|rainloop|__groupfolders|updater-|vplan|plan)"
  
-if [ `hostname` = "$lmnservername" ]; then +## kopiere dieses Script auf den Cloudserver                                                                                                                   
-    echo "copying $0 to $nextcloudservername+if [ `hostname -s` = "server" ]; then 
-    scp $0 ${nextcloudservername}+    echo "Kopiere dieses Script  $0 auf den Cloudserver: $cloudserver und führe es dort wieder aus
-    ssh -t ${nextcloudservername} $0+    scp $0 $cloudserver:$0 
 +    ssh -t $cloudserver $0 $1
     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 "\." grep -vE "(appdata|files_external)" > /tmp/userlist +if [ "$1" = "--simulate" -o "$1" = "-s" ]; then 
-echo `cat /tmp/userlist wc -l` "user"+    echo "Simulation! Es wird nichts gelöscht!" 
 +    simulate="echo Kommando wäre: " 
 +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  awk '{print $2}' sed "2d;/^\s*$/d" > /tmp/zuloeschendeuser 
 +if [ -s /tmp/zuloeschendeuser ]; then 
 +    cat /tmp/zuloeschendeuser paste -s -" "
  
-echo "Checke, ob User noch in LDAP sind:+    lines=$(cat /tmp/zuloeschendeuser | wc -l) 
-for i in `cat /tmp/userlist` ; do  +    lines=$(echo "$lines * 2| bc -l) 
-    if  sudo -u www-data php $occ ldap:check-user "$i"grep "not" 2>&>/dev/null ; then + 
-        # not a local user? +    for i in `cat /tmp/zuloeschendeuser`; do 
-        if ! sudo -u www-data php $occ user:info "$i2>&>/dev/null ; then +        $phpcmd $occcmd ldap:check-user "$i"
-            echo "$i" >> $hardlist +    done pv -l -s $lines > /dev/null 
-        fi +    $phpcmd $occcmd ldap:show-remnants  | awk '{print $2}' | sed "2d;/^\s*$/d" > /tmp/zuloeschendeuser2 
-    else +    if ! diff /tmp/zuloeschendeuser2 /tmp/zuloeschendeuser ; then 
-        echo -n "."+        echo "HUCHBitte 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 /tmp/userlist | wc -l` > /dev/null 
  
-echo -n "Users nicht mehr im LDAP:" + 
-sudo -u www-data php /opt/nextcloud/occ ldap:show-remnants  | awk '{print $2}' | sed "2d;/^\s*$/d" > /tmp/zuloeschendeuser +    [[ -n $simulate ]&& echo "SIMULATION: würde in keinem Fall etwas löschen!
-if [ -s /tmp/zuloeschendeuser ]; then +    echo -n "Sollen diese User gelöscht werden? yes/NO "
-    cat /tmp/zuloeschendeuser | paste -s -d " " +
-    echo "Sollen diese User gelöscht werden? yes/NO"+
     read     read
     if [ "x$REPLY" = "xyes" ] ; then     if [ "x$REPLY" = "xyes" ] ; then
-        for i in `cat /tmp/zuloeschendeuser`; do  +        for i in `cat /tmp/zuloeschendeuser`; do 
-            sudo -u www-data php /opt/nextcloud/occ user:delete "$i";  +            echo -n "$i: " 
-        done +            $simulate $phpcmd $occcmd user:delete "$i"; 
 +        done
     fi     fi
 else else
     echo "keine"     echo "keine"
 fi fi
 +### Erstelle eine Liste an Usern mit Dateien in der Cloud                                                                                                     
 +echo -n "Erstelle Liste aller User mit Dateien in der Cloud: "
 +ls $data | grep -v "\." | grep -vE $excludelist > /tmp/userlist
 +echo `cat /tmp/userlist | wc -l` "user"
  
-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 ]; then +echo "Checke, ob User noch in LDAP sind:" 
-    cat $hardlist | paste -s -d " "+for i in `cat /tmp/userlist` ; do 
 +    ## not an LDAP user?                                                                                                                                       
 +    if  $phpcmd $occcmd ldap:check-user "$i" | grep "not" 2>/dev/null >/dev/null ; then 
 +        # not a local user?                                                                                                                                    
 +        if ! $phpcmd $occcmd user:info "$i" 2>/dev/null >/dev/null ; then 
 +            ## then add him to the list                                                                                                                        
 +            echo "$i" >> $homelist 
 +        fi 
 +        ## echo one byte                                                                                                                                       
 +        echo -n "x" 
 +    else 
 +        ## echo one byte                                                                                                                                       
 +        echo -n "." 
 +    fi 
 +done | pv -s `cat /tmp/userlist | wc -l` > /dev/null 
 +### 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 ]; then 
 +    cat $homelist | paste -s -d " 
 +    [[ -n $simulate ]] && echo "SIMULATION: würde in keinem Fall etwas löschen!"
     echo "Sollen diese User per rm -rf $data/<user> gelöscht werden? yes/NO"     echo "Sollen diese User per rm -rf $data/<user> gelöscht werden? yes/NO"
     read     read
     if [ "x$REPLY" = "xyes" ] ; then     if [ "x$REPLY" = "xyes" ] ; then
-        for i in `cat $hardlist`; do +        for i in `cat $homelist`; do 
-            echo rm -rf $data/$i+            $simulate rm -rf $data/$i
         done         done
     fi     fi
Zeile 157: Zeile 198:
     echo "keine"     echo "keine"
 fi fi
 +exit 0
 +rm /tmp/zuloeschendeuser
 +rm /tmp/userlist
 +rm $homelist
 +
 +
 </code> </code>
 +
 +
 [[anwenderwiki:owncloud:schuljahreswechsel]] anwenderwiki/owncloud/schuljahreswechsel.txt · Zuletzt geändert: 2023/09/10 16:24 von tobias