• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Bash Script Befehl1 ausführen wenn Befehl2 beendet wurde

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
Hallo Atler,
vorweg, ich bin kein Bash Scripting Experte!
Ich will mir ein kleines Script schreiben, welches in Plesk eine Domain anlegt, eine Datenbank zur Domaine hinzufügt, ein CMS nach httpdocs entpackt und einen Dump einspielt.

An sich kein großes Ding:

Code:
#!/bin/bash
PSA="/usr/local/psa/bin/"

cd $PSA

# Nur für mich als Merker
#dom=$1
#owner=$2
#ftp=$3
#ftppass=$4
#db=$5
#dbu=$6
#dbp=$7


[B]#Im echten Script sind alle Befehle in einer Zeile und durch && getrennt[/B]

./domain --create $1 -owner $2 -ip 192.168.1.2 -login $3 -passwd $4 -hosting true -www true -hst_type 'phys' -shell false -php true -php_handler_type fastcgi -php_safe_mode false -fastcgi true -ssl true -same_ssl true -webstat true -webstat-protdir-access true -dom_user true -du_passwd $4 

./database --create $5 -domain $1 -type mysql 

 ./database --update $5 -add_user $6 -passwd $7 && cp /var/www/vhosts/installer_app/skeletons/cms.tar.gz /var/www/vhosts/$1/httpdocs/ 

tar xfz /var/www/vhosts/$1/httpdocs/cms.tar.gz 

chown -R $3:psacln /var/www/vhosts/$1/httpdocs/* 

 chmod -R 755 /var/www/vhosts/$1/httpdocs/* 

 cd /var/www/vhosts/$1/httpdocs/db <- Hier bricht es ab

 mysql -uadmin -ppasswort $5 < cms.sql 

 cd .. 

 rm -rf cms.tar.gz
Wenn ich dann in httpdocs schaue, ist cms.tar.gz zwar vorhanden, wurde aber nicht entpackt. Wie kann ich denn wirklich sicherstellen, das der jeweils nachfolgende Befehl erst ausgeführt wenn der vorherige beendet wurde? Dachte && regelt das?

Any idea?
 
Seltsam, sollte mit den &&s schon so ein, wie du es dir gedacht hast. Oder hapert es an einer anderen Stelle?
 
Schwer zu sagen, ich führ das Script als root aus. Und die Fehlermeldung sagt:
./setup: line 15: cd: /var/www/vhosts/localhorst.de/httpdocs/db: No such file or directory

Da die cms.tar.gz in httpdocs liegt, aber nicht entpackt wird, denke ich mal, das tar zu früh mit entpacken anfängt und dann stolpert.
Allerdings würde ich dann eine Fehlermeldung erwarten.
 
Hänge es halt auch noch mit && dran. Wobei ein solches Skript durchaus sequentiell arbeiten sollte.
 
Ich hab jetzt zwischen den Kopiervorgang und tar xfz folgendes einegfügt:
while [ ! -e /var/www/vhosts/$1/httpdocs/cms.tar.gz ];
do
# Sleep until file does exists/is created
sleep 1
done

Bringt leider auch nix
 
Ich behaupte einfach mal, dass die im tar vorhandenen Pfade nicht passen?
 
Nope, wenn ich "von Hand" in den Ordner wechsel kann ich es problemlos entpacken.
 
Genau da liegt das Problem, denn das hast du in obiger Auflistung nicht getan.
Wirf mal einen Blick nach /usr/local/psa/bin/
Dorthin hast du das Teil nämlich entpackt (ins aktuelle Verzeichnis...)
 
  • Like
Reaktionen: Slashwalker
Ah nein ich werd bekloppt!!! Genau dort liegt das ganze Geraffel jetzt. Danke für den Hinweis!!
 
Du kannst beom tar angeben wo er das Archiv auspacken soll.
 
Hab vor dem tar Befehl ein cd /richtiges/Verzeichnis eingefügt. Löft!