Hallo,
zur Verteilung von neuen Revisionen auf einem webserver-cluster möchte ich gerne eine 'distributet shell' - dsh einsetzen. Prinzipiell eine simple Sache, die nur einen Haken hat:
1. ins Verzeichnis wechseln 2. webserver stoppen 3. cvs update -r xxxx 4. Rechte setzen und diverse Aufräumarbeiten 5. FRAGE: ist alles OK, willst du den Webserver wieder anschalten? 6. wenn ja, dann webserver starten
Genau der Punkt 5 funktioniert nicht über dsh. Die einzelnen Kommandos sind zu einem Shellscript zusammengefasst:
CMD="cd /mnt/data/www/; \ /etc/init.d/apache2 stop; \ cvs -nq up -r $TAG; \ chmod -R 777 *; \ rm lib/mall/templates_c/*.php; \ echo 'Apache starten (y/n)?'; \ read START ; \ echo "ihre Antwort: $START"; \ if [ "$START" = 'y' ]; then \ /etc/init.d/apache2 start; \ echo 'Apache gestartet.'; \ else \ echo 'apache nicht gestartet'; \ fi ";
dsh -g webtest -c -- $CMD
($TAG ist der auszucheckende Tag aus dem Repos) dsh rennt los und klappert die Server auch ab, allerdings bleibt sie bei 'read START' nicht stehen und wartet auf die Eingabe, sondern macht einfach weiter.
Wie bekomme ich es hin, dass auf meine Eingabe gewartet wird?
Mit freundlichen Grüßen
Jens Puruckherr
ich Sshrieb, Linux-User-Group Dresden lug-dd@mailman.schlittermann.de writes:
CMD="cd /mnt/data/www/; \ /etc/init.d/apache2 stop; \ cvs -nq up -r $TAG; \ chmod -R 777 *; \ rm lib/mall/templates_c/*.php; \ echo 'Apache starten (y/n)?'; \ read START ; \ echo "ihre Antwort: $START"; \ if [ "$START" = 'y' ]; then \ /etc/init.d/apache2 start; \ echo 'Apache gestartet.'; \ else \ echo 'apache nicht gestartet'; \ fi ";
Besser erst mal so: CMD="cd /mnt/data/www/; \ /etc/init.d/apache2 stop; \ cvs -nq up -r $TAG; \ chmod -R 777 *; \ rm lib/mall/templates_c/*.php; \ echo 'Apache starten (y/n)?'; \ read START ; \ echo ihre Antwort: $START; \ if [ $START = y ]; then \ /etc/init.d/apache2 start; \ echo 'Apache gestartet.'; \ else \ echo 'apache nicht gestartet'; \ fi ";
Wobei alles ab $START scheinbar schon von der lokalen Shell expandiert wird und darum immer etwas anderes als 'y' ist. Wie kann ich erreichen, dass $START erst bei der Ausführung auf dem RemoteHost interpretiert wird?
Mit freundlichen Grüßen
Jens Puruckherr
Hallo,
unabhängig von ersten (komplizierteren Problem) kannst Du anders Quoten:
CMD=".... $TAG"'....$START'
oder
CMD=".....$TAG.....$START"
Heiko
On Tue, 13 Jun 2006 13:22:51 +0200 "Jens Puruckherr" jpuruckherr@cyberport.de wrote:
($TAG ist der auszucheckende Tag aus dem Repos) dsh rennt los und klappert die Server auch ab, allerdings bleibt sie bei 'read START' nicht stehen und wartet auf die Eingabe, sondern macht einfach weiter.
Wie bekomme ich es hin, dass auf meine Eingabe gewartet wird?
Ich kenn zwar keine dsh aber temporär würde ich
while !(-efrs $FERTIGMELDUNG) sleep X?
wenn dann 5.OK
würde ich die $FERTIGMELDUNG rüberschieben und es geht weiter
micha
Linux-User-Group Dresden lug-dd@mailman.schlittermann.de writes:
Ich kenn zwar keine dsh
http://www.netfort.gr.jp/~dancer/software/dsh.html
aber temporär würde ich while !(-efrs $FERTIGMELDUNG) sleep X? wenn dann 5.OK würde ich die $FERTIGMELDUNG rüberschieben und es geht weiter micha
Das habe ich jetzt nicht verstanden.
Mit freundlichen Grüßen
Jens Puruckherr
On Wed, 14 Jun 2006 13:25:53 +0200 "Jens Puruckherr" jpuruckherr@cyberport.de wrote:
Linux-User-Group Dresden lug-dd@mailman.schlittermann.de writes:
Ich kenn zwar keine dsh
http://www.netfort.gr.jp/~dancer/software/dsh.html
aber temporär würde ich while !(-efrs $FERTIGMELDUNG) sleep X? wenn dann 5.OK würde ich die $FERTIGMELDUNG rüberschieben und es geht weiter micha
Das habe ich jetzt nicht verstanden.
Ich warte auf Datei $FERTIGMELDUNG wenn vorhanden dann weiter
micha
lug-dd@mailman.schlittermann.de