Hallo Jan, On Wed, Sep 24, 2003 at 02:01:01AM +0200, Jan Trippler wrote:
Am Mittwoch, 24. September 2003 00:44 schrieb Daniel Lord:
David, das galt Dir ;)
Der bin ich zwar nicht, aber trotzdem einige Anmerkungen.
Da bin ich Dir sicher nicht böse :)
######## AB HIER SOLLTEN KEINE ÄNDERUNGEN MEHR NÖTIG SEIN ####### # # Hier wird aufgeräumt function cleanup () { rm -f "$ISO9660"
for each in 0 1 2 3 4 5 6 7 8 9 do rm -f "$PATHLIST".$each.txt done }
Was passiert, wenn mehr als 10 Listen vorhanden sind? Solltest du hier nicht besser alle zutreffenden Listen loeschen (du arbeitest ja unten immer mit >>)? Der cleanup lässt sich imho besser direkt in die Schleife unten einbauen (ich habe die Stellen mit # cleanup gekennzeichnet).
Dann ist das Skript IMHO durch ein Bandlaufwerk oder eine DVD zu ersetzen :) Den Fall habe ich deshalb ausgeklammert. Unten aber noch die Abfrage vergessen. Gelöscht habe ich die hier damit ich den sudo lokal root xploit umgehen kann der sich sonst anbietet.
if [ $USER != root ] then echo "Programm muss als Benutzer \"root\" ausgeführt werden." exit -1; fi
Das ist a) falsch und b) unsicher und lässt sich c) leicht austricksen: <schnipp> jan@roland:~> echo $USER jan jan@roland:~> export USER=root jan@roland:~> if test "$USER" = "root"; then
echo "hurra, ich bin root" fi hurra, ich bin root <schnapp> Besser wäre es hier, das Kommando "id -u" zu benutzen (die Rechte hängen eh an der User-ID, nicht am Namen) und if test `id -u` -ne 0; then ... fi aufzurufen.
OK, es nützt dem Trickser zwar IMHO nichts aber das wird auf jeden Fall in Zukunft über id geregelt.
#cleanup (der > gehört zum Kommando und ist kein Quoting)
"$PATHLIST".$num.txt
siehe oben. Das ermöglicht es sudo auszutricksen und r00t zu werden.
ls | while read dir; do
do let SIZE=$[SIZE+`du -sb "$dir" | cut -f 1`] if test $SIZE -lt $CDSIZE then if test 0 -lt $SIZE then echo "$VERZEICHNIS/$dir" >> "$PATHLIST".$num.txt else SIZE=0
huch? $SIZE müsste hier doch eh 0 sein nach Deiner if-Abfrage oben. Ich kenne keinen Fall, in dem du einen negativen Wert zurückliefert. IMHO ist dieser if-then-else überflüssig.
Size wird dann negativ wenn die Zahl zu gross wird. Deshalb die zusätzliche Abfrage für den Grenzfall (hatte ich leider schon)
Was machst Du bei einer 701 MB großen Datei / Verzeichnis? Sowas solltest Du zusätzlich abfangen und die Datei mit einer Fehlermeldung verwerfen.
jup das fehlt noch :)
Fehler bei Pfaden mit Leerzeichen, besser: ls $PATHLIST.?.txt | while read each; do
und dabei war ich mir fast sicher das ich überall auch an Leerzeichen gedacht hatte :(
Du begrenzt oben die Anzahl der zu erstellenden Textdateien nicht, hier fragst Du nur 0 - 9 (und evtl. zufälligerweise rumliegende a-z, A-Z,...) ab.
jup, da fehlt noch die Begrenzung.
Jan
Danke für die prompte und produktive Antwort Greetings Daniel -- Darkness is falling, over my mind | http://www.againsttcpa.com/ My burning eyes are, deadly blind | http://www.notcpa.org/ Now there is nothing like it seem | http://chaosradio.ccc.de/cr78.html All illusion, only dreams........ --- Darkwell "Realm Of Darkness"