ubuntuusers.de

Shell script für a2ensite und apache2 reload

Status: Ungelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

isaack

Anmeldungsdatum:
31. Oktober 2010

Beiträge: 195

Hallo zusammen,

ich muss jetzt hier im Forum direkt mal nach einem Code fragen.

Ich würde gern mit einem Shell Script, was aller 2 min per Cron laufen soll, eine datei auslesen lassen in der die neuen domains für meinem server stehen. Sprich die subdomains werden per PHP in eine TXT datei auf dem Server geschrieben und vorher auf eventuelle manipulation geprüft. Nun soll der Server alle Namen für die neuen Subdomains aus der Datei holen und mit a2ensite ausführen und die notwendigen eintragungen in /etc/hosts vornehmen.

Nachdem das beendet ist soll das ganze noch mit einem reload des apache abgeschlossen werden.

Es wäre klasse, wenn mir hier jemand helfen kann.

beste Grüße eric

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Gibt es eigentlich einen besonderen Grund, dass Du das mit einem cron-Job machen willst ?

Sonst würde ich eher an tail --follow denken, an inotify, oder vielleicht auch an swatch , je nachdem.
Die reagieren von sich aus, wenn sich an der beobachteten Datei was ändert, und das ist es ja, was Du eigentlich wolltest, oder ?

Zu dem Rest, mit Apache, und wie man sowas bei einem produktiven Server wasserdicht macht, da habe ich zu wenig Ahnung.
Da müsste jemand anders einsteigen.

LG,

track

isaack

(Themenstarter)

Anmeldungsdatum:
31. Oktober 2010

Beiträge: 195

ich wollte halt keine direkte verbidung zwischen shell script und php haben um einfach keine weitere sicherheitslücke zu provozieren. daher soll alles erst nach einer genauen prüfung in die txt geschrieben werden und dann mit einem cron das shell script aufrufen zur weiterverabeitung.

Habe jetzt auch mal ein wenig im internet geschaut und was kleines geschrieben. Kann mir denken, dass das so nicht wirklich klappen kann.

1
2
3
4
5
6
7
8
9
#!/bin/sh
while read line
do
    sudo a2ensite $line.conf
done < /home/isaack/Schreibtisch/test1.txt

cat /dev/null > /home/isaack/Schreibtisch/test1.txt

sudo service apache2 reload

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2505

So auf den ersten Blick sehe ich jetzt nichts, was da hart in die Hose gehen könnte.

Klar,

  • die Configs für die VHosts müssen schon fertig rumliegen,

  • du brauchst da die passenden sudo-Rechte,

  • du kriegst ’ne Warnung für Configs, die schon aktiv sind,

  • der Inhalt von „$line“ sollte mal lieber kein „untrusted user input“ sein.

Was sich noch anbietet, wäre ein „apachectl configtest“, um zu schauen, ob der neue VHost syntaktisch auch in Ordnung ist. Sonst startet dein Apache beim nächsten Restart unter Umständen nicht mehr.

Den Ansatz, das als Cronjob auszuführen, finde ich auch nicht so dramatisch falsch, sofern man die Verzögerung verkraften kann. Das ist schön lose gekoppelt.

isaack

(Themenstarter)

Anmeldungsdatum:
31. Oktober 2010

Beiträge: 195

hay,

also würde das so funktionieren? aber jetzt stehe ich vor dem problem, das ich nicht wirklich weiß wie ich nun eine datei öffne und die zeile $line dazu schreiben kann.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Je nachdem, wie deine Zeile aussieht, kannst du einfach

echo "Meine neue Zeile" >> meineZielTextDatei.txt

nutzen. Nur: Die bash ersetzt ihr bekannte Variablen, Anführungszeichen müssten escaped werden,...

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2505

isaack schrieb:

aber jetzt stehe ich vor dem problem, das ich nicht wirklich weiß wie ich nun eine datei öffne und die zeile $line dazu schreiben kann.

In PHP? Im „append“-Mode öffnen. ☺

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

isaack schrieb:

ich wollte halt keine direkte verbidung zwischen shell script und php haben um einfach keine weitere sicherheitslücke zu provozieren. daher soll alles erst nach einer genauen prüfung in die txt geschrieben werden und dann mit einem cron das shell script aufrufen zur weiterverabeitung.

Diese Anforderung spricht gegen einen 2-minuetigen Cronjob. Oder pruefst du manuell jeder Minute die Datei auf malicious content?

Antworten |