#!/bin/bash
#
# Kopiert nach einer Neuinstallation die alten Benutzer und ihre Daten
# von einer "alten" Arktur-Installation (Version 3.3) auf /dev/hdc (Master
# am sekundaeren IDE-Kanal) auf /dev/hda (Master am primaeren IDE-Kanal)
# des "neuen" Arkturs (Version 3.5).
# Falls die Festplatte des "alten" Arkturs nicht an /dev/hdc haengt,
# muss die Zeile 20 angepasst werden.
#
# Peter Somm, 28.02.2003, 03.11.2003, 01.08.2004, 05.01.2005
# Ergaenzungen durch Helmut Hullen, 08.05.2003
# Ergaenzungen durch Pascal Schmitt, 28.10.2003
# Rechteanpassung an Arktur V_3.5 durch Reinhold Dorn und Karl-Ernst Gruhler, 30.07.2004
#
# Vorbereitungen
old_arktur=/dev/hdc
# Prüfen, ob die Platte existiert (Hullen)
if [ -z "$(fdisk -l $old_arktur)" ]
then
echo Ich habe keine Festplatte $old_arktur gefunden.
echo Ich gebe deshalb auf.
exit 1
fi
# letzte Chance, um abzubrechen
echo
echo "Die Uebernahme der Benutzerverzeichnisse kann lange (1GB = 5min)"
echo "Falls dazu keine Zeit ist, kann hier mit CRTL-C abgebrochen werden."
echo "Sonst bitte die ENTER-Taste druecken."
read
# Abfrage, ob eMails und News uebernommen werden sollen (Hullen)
echo
echo Sorgen Sie bitte dafuer, dass ausser Ihnen niemand auf Arktur zugreift.
echo
read -p "Soll die noch nicht abgeholten eMails der Benutzer kopiert werden [j/N]? " eMail
# Mount-Points erzeugen
echo "> Vorbereitungen laufen - bitte etwas Geduld..."
mkdir /tmp/oldroot
mkdir /tmp/oldvar
mkdir /tmp/oldhome
# Mounten der drei Partitionen
mount "$old_arktur"1 /tmp/oldroot
mount "$old_arktur"3 /tmp/oldvar
mount "$old_arktur"4 /tmp/oldhome
sleep 15
echo "> Vorbereitungen abgeschlossen."
# User-Datenbank erzeugen, kopieren und User neu erzeugen
echo "> Benutzer auf neuen Arktur uebernehmen - bitte etwas Geduld..."
cd /tmp/oldroot/etc/Systemverwaltung
co user
cp /tmp/oldroot/etc/Systemverwaltung/user /etc/Systemverwaltung/user
/usr/lib/ods-server/bin/user -install
rcs -u /etc/Systemverwaltung/user >/dev/null 2>&1
echo "> Benutzer auf neuen Arktur uebernommen."
# Projektgruppen uebernehmen
grep ^p_ /tmp/oldroot/etc/group >> /etc/group
grep ^p_ /tmp/oldroot/etc/gshadow >> /etc/gshadow
echo "> Projektgruppen auf neuen Arktur uebernommen."
# Passwoerter uebernehmen
#alte Maschinenaccounts fuer Windows 2000 und XP erzeugen
for element in `grep ^[A-Z0-9-_]*$:x:[5-9][0-9][0-9]:100:NT-Maschinenaccount /tmp/oldroot/etc/passwd | cut -f1 -d$`
do
mkntclient $element
done
#alte User-Passworter in /etc/shadow uebernehmen (Schmitt)
#alle Benutzer mit UID zwischen 500 und 999
for element in `grep :[5-9][0-9][0-9]: /tmp/oldroot/etc/passwd | cut -f1 -d: `
do
for linien in `grep ^$element: /tmp/oldroot/etc/shadow`
do
echo $linien >> /etc/shadow
done
done
#alle Benutzer mit UID zwischen 1000 und 9999
for element in `grep :[1-9][0-9][0-9][0-9]: /tmp/oldroot/etc/passwd | cut -f1 -d:`
do
for linien in `grep ^$element: /tmp/oldroot/etc/shadow`
do
echo $linien >> /etc/shadow
done
done
chown root:shadow /etc/shadow
chmod 600 /etc/shadow
echo "> Passwoerter der Benutzer und der Maschinen uebernommen."
# Uebernehmen der Userdaten (alles in /home ausser /home/www und /home/adm/software)
cd /tmp/oldhome
tar cpSf - . --exclude=www --exclude=adm | (cd /home ; tar xpSvf - )
cd /tmp/oldhome/adm
tar cpSf - . --exclude=software | (cd /home/adm ; tar xpSvf - )
echo "> Daten der Benutzer uebernommen."
# Uebernehmen der Samba-Passworter
cp /tmp/oldroot/etc/samba/private/* /etc/samba/private
echo "> Samba-Passwoerter uebernommen."
# Rechte der Lehrerverzeichnisse setzen fuer Arktur 3.5 (Dorn, Gruhler)
for i in $(cat /etc/passwd | grep :101: | cut -d: -f1 )
do
chmod o-x /home/$i
setfacl -m u:wwwrun:--x /home/$i/
setfacl -m m:--x /home/$i/
done
# Rechte der Schuelerverzeichnisse setzen fuer Arktur 3.5
for i in $(cat /etc/passwd | grep :102: | cut -d: -f1 )
do
chgrp -R fachl /home/$i
chmod o-x /home/$i
setfacl -m u:wwwrun:--x /home/$i/
done
# Uebernehmen der Zugriffsrechte fuer das Admin-Interface
cp /tmp/oldhome/www/admin/.htpasswd /usr/www/admin/.htpasswd
cp /tmp/oldroot/etc/sudoers /etc/sudoers
echo "> Zugriffsrechte auf Admin-Interface uebernommen."
# Uebernehmen nicht abgeholter eMails
if [ "$eMail" = j -o "$eMail" = J ]
then
cd /tmp/oldvar/spool
tar cpSf - mail | (cd /var/spool ; tar xpSf - )
echo "> eMails uebernommen."
fi
# Abschluss
echo "> Aufraeumarbeiten laufen - bitte etwas Geduld..."
cd /
sleep 15
umount /tmp/oldroot
umount /tmp/oldvar
umount /tmp/oldhome
rmdir /tmp/oldroot
rmdir /tmp/oldvar
rmdir /tmp/oldhome
echo "> Aufraeumarbeiten abgeschlossen - Arktur wird neu gestartet."
reboot