Benötige Hilfe bei bash Script Erstellung

kugelschubs

Registered User
Hallo,

ich muss vorweg sagen das ich absolut keine Ahnung von bash Scripten habe.
Daher bitte ich hier um Hilfe, die SuFu hat mir auch nicht wirklich geholfen.

Ich möchte eine bash Datei haben die nacheinander folgende Befehle ausführt:

Code:
mogrify -format jpg /homepfad/startordner/*.JPG      

cp -uv /homepfad/startordner/*.jpg /homepfad/gross/        

cp -uv /homepfad/startordner/*.jpg /homepfad/klein/   

mogrify -resize 680x680 /homepfad/gross/*.jpg    

mogrify -resize 100x120 /homepfad/klein/*.jpg     

rm -fv /homepfad/startordner/*.jpg 

rm -fv /homepfad/startordner/*.JPG

Die Fotos die ich in den Ordner "startordner" hochlade sollen also erst einmal umgewandelt werden in .jpg statt mit Grossschreibung .JPG

Dann jeweils in den ordner "gross" und "klein" kopiert werden, um dort dann dort verkleinert zu werden, einmal auf 680x680 Pixel und einmal auf 100x120 Pixel so dass ich dann eine grosse Version des Fotos habe und ein Vorschaubild.

Danach sollen die Originalfotos aus dem "startordner" wieder gelöscht werden.

Die bash Datei soll später über Usermin aufgerufen werden können, ich weiss das es da dann auch eine Ausgabe mit echo gibt, aber wie ich das nun selbst schreiben soll das bash script... keine Ahnung.
Bin dankbar für jeden Vorschlag.

Denkbar wäre auch ein perl script, falls sowas jemand hat oder Ideen dazu hat.

Gruss
Peter

Edit:
habe Rootserver mit Suse Linux 10.2
Imagemagick liegt unter /usr/bin/mogrify , die shells unter /bin/bash etc. ...
und falls noch was wichtig wäre zu wissen bitte fragen, danke
 
Last edited by a moderator:
Hallo,

Code:
#!/bin/bash
# mein tolles bashscript

mogrify -format jpg /homepfad/startordner/*.JPG      

cp -uv /homepfad/startordner/*.jpg /homepfad/gross/        
cp -uv /homepfad/startordner/*.jpg /homepfad/klein/   

mogrify -resize 680x680 /homepfad/gross/*.jpg    
mogrify -resize 100x120 /homepfad/klein/*.jpg     

rm -fv /homepfad/startordner/*.jpg 
rm -fv /homepfad/startordner/*.JPG

exit 0
 
habe es als meinedatei.sh gespeichert und hochgeladen, wenn ich die datei ausführen will bekomme ich das:

ich@server:/userkommandos # ./meinedatei.sh
-bash: ./meinedatei.sh: /bin/bash^M: bad interpreter: No such file or directory

meinedatei.sh hat chmod 755

Was ist falsch ?
 
das mit dem do2unix befehl hat funktioniert, die bash datei läuft super jetzt, hab sie in usermin eingebunden.

Vielen Dank an alle :)
 
Falls jemand das Script auch gebrauchen kann, hier mein "Final Release" :)

Code:
#!/bin/bash
# mein tolles bashscript

echo "Bitte warten - Überprüfe Startordner auf neue Inhalte / Fotos"
if test -f /home/www/web5/html/de/bilderupload/startordner/*.JPG
then
echo "Bitte warten - Wandle in .jpg Format um falls .JPG im Dateinamen verwendet wurde"
mogrify -format jpg /home/www/web5/html/de/bilderupload/startordner/*.JPG 
echo "Erfolgreich ausgeführt!"
else
echo "Keine Daten vorhanden, bitte erst Fotos hochladen!"
fi     

if test -f /home/www/web5/html/de/bilderupload/startordner/*.jpg
then
echo "Bitte warten - Kopiere Fotos in entsprechende Ordner für Grosse und Vorschaubilder"
cp -uv /home/www/web5/html/de/bilderupload/startordner/*.jpg /home/www/web5/html/de/bilderupload/gross/        
cp -uv /home/www/web5/html/de/bilderupload/startordner/*.jpg /home/www/web5/html/de/bilderupload/klein/  
echo "Erfolgreich ausgeführt!"
else
echo "Keine Daten vorhanden, bitte erst Fotos hochladen!"
fi

echo "Bitte warten - Skaliere vorhandene Fotos auf gewünschte Grösse"
echo "Status: Skaliere Fotos für Grossansicht"
mogrify -resize 680x680 /home/www/web5/html/de/bilderupload/gross/*.jpg  
echo "Status: Skaliere Fotos für Vorschauansicht"
mogrify -resize 100x120 /home/www/web5/html/de/bilderupload/klein/*.jpg
echo "Erfolgreich ausgeführt!"     

echo "Bitte warten - Lösche alle Originalfotos aus dem Startordner"
rm -fv /home/www/web5/html/de/bilderupload/startordner/*.jpg 
rm -fv /home/www/web5/html/de/bilderupload/startordner/*.JPG

echo ""
echo "ALLE BEFEHLE WURDEN ERFOLGREICH DURCHGEFÜHRT!"

exit 0

Hänge ein Screenshot an wie es im Usermin aussieht.
Danke nochmal.

Gruss
Peter
 

Attachments

  • ssf-screen.PNG
    ssf-screen.PNG
    56.4 KB · Views: 275
Wenn ich dir nen Tipp geben darf, häng bei den "else"-Abschnitten noch ein "exit 1" ran, da es ja sinnlos ist, das Script durchlaufen zu lassen, wenn es gar nix machen kann ;)

Ich hoffe du weißt was ich mein
 
hab festgestellt das die if Abfrage test sich ja nur auf Dateien bezieht bzw. mit -d ob es ein Verzeichnis ist.

Das ist aber eigentlich nicht das was ich abfragen möchte.
Ich möchte eine wenn (if) Abfrage die feststellt ob das Verzeichnis leer ist oder ob Fotodateien enthalten sind und dann nur wenn Fotodateien enthalten sind das restliche Script durchläuft.

Ansonsten Script stoppen mit exit 1

Was gibt es da für Möglichkeiten?
Geht das überhaupt mit bash?
Oder müsste man da ein perl script einsetzen?

MFG

p.s.: Natürlich könnte ich das Script immer durchlaufen lassen, wäre aber nicht ideal.
 
Last edited by a moderator:
Back
Top