seichi1
Goto Top

Benötige Unterstützung bei Shell Script - Test Operation..

Hallo..

Ich brauche Bitte eure Hilfe... und zwar folgendes... Ich muss ein Script schreiben, dass die Home-Laufwerke von nicht mehr vorhandenen User sucht und dann löscht..
Benutzer die es nicht mehr gibt, werden zu einer UID.. dh. Der Besitzer des Home-LW wird durch die UID ersetzt...

vorhandener Benutzer: rwxrwxrwx 1 SEPPI users 9 May 17 00:52 /home/SEPPI
ohne Benutzer: rwxrwxrwx 1 12345 users 9 May 17 00:52 /home/SEPPI

und jetzt das Problem..

Wie kann ich mit der Test anweisung checken, ob der Wert eine Zahl oder ein Wort ist...

for USR in `ls -l /home/ | awk -F" " '{ print $3 }'`
do
if [ $USR = (ZAHL ODER WORT) ];then
do
echo "$USR ist eine ZAHL"
else
echo "$USR ist ein WORT"
fi
done

Bitte um rasche Hilfe...
THX

Content-Key: 73150

Url: https://administrator.de/contentid/73150

Printed on: April 24, 2024 at 09:04 o'clock

Member: Natureshadow
Natureshadow Nov 09, 2007 at 09:57:40 (UTC)
Goto Top
Müsste ich mir jetzt genauer ansehen, die spezielle Frage kann ich also nicht beantworten. Ich kann dir nur sagen, wie ich es machen würde.

pushd /home
for usr in `ls`; do
done
popd

Das geht die Benutzerverzeichnisse durch, durchsucht /etc/passwd nach edn Namen. Wenn dieser nicht vorhanden ist, wird das Verzeichnis komplett gelöscht.

-nik
Member: seichi1
seichi1 Nov 10, 2007 at 19:46:06 (UTC)
Goto Top
Müsste ich mir jetzt genauer ansehen,
die spezielle Frage kann ich also nicht
beantworten. Ich kann dir nur sagen, wie ich
es machen würde.

pushd /home
for usr in `ls`; do
done
popd

Das geht die Benutzerverzeichnisse durch,
durchsucht /etc/passwd nach edn Namen. Wenn
dieser nicht vorhanden ist, wird das
Verzeichnis komplett gelöscht.

-nik

Hallo..
deine Lösung ist zwar ein Weg, aber genau aus diesem Grund muss ich das Script auch neu schreiben, das es in dem /home/ Verzeichniss auch Netzlaufwerke aller User liegen, da diese leider ähnlich den Home Laufwerken der User heißen, scheidet diese möglcihkeit leider aus..
Aber trotzdem Danke..

Habe aber Gottseidank schon eine Lösung!!

for USR in `ls -l /home/ | awk -F" " '{ print $3 }'`
do
if [[ $USR =~ "^[0-9]*" ]];then
do
echo "$USR ist eine ZAHL"
else
echo "$USR ist ein WORT"
fi
done

THX
Mfg Seichi
Member: Natureshadow
Natureshadow Nov 20, 2007 at 16:13:54 (UTC)
Goto Top
Hallo,

ist zwar schon alt, aber ich habe da noch was. Habe gerade ein wenig mit dem find-Befehl gespielt ...

find /home -type d -nouser -ok rm -rf {} ;

Der Befehl findet alle Verzeichnisse (-type d) unterhalb von /home, die keinem im System eingetragenen Benutzer gehören (-nouser) und löscht sie nach Bestätigung (-ok rm -rf {} ;).

Vielleicht braucht das ja noch jemand ...
Nik