Hallo, Am Sam, 16 Sep 2006, Juergen Langowski schrieb: [..]
Als root lasse ich mir das auf dem Entwicklungsserver mit "find" anzeigen. Ergebnis: 6 von 12 Domains benutzen das Skript und brauchen das Update.
Also kopiere ich das Skript sechsmal rüber.
Beim nächsten Besuch der Domains als ftp-Benutzer merke ich dann, was ich vergessen habe. Die Rechte stimmen nicht, und der ftp- Benutzer darf nicht mehr dran.
Was mir dazu einfällt:
- sechsmal kopieren und sechsmal mit chown zuweisen. Umständlich. - sechsmal als ftp-Benutzer anmelden, sechsmal hochladen. Auch umständlich.
Dazu käme dann noch, dass die Dateien weitere sechs Mal von den lokalen Domains auf die Produktivdomains übertragen werden müssen.
Wie kann man so etwas regelkonform, unter Sicherheitsaspekten einwandfrei UND effizient erledigen?
Schnellschuss:
Domains finden:
DOMAINS="`find ...`"
dabei sollen find plus Nachbearbeitung die Liste der Domains
ausgeben. In DOMAINS steht dann z.B. durch Leerzeichen getrennt
$ echo "'$DOMAINS'"
'foo.de bar.de example.com'
Wie du das hinbekommst haengt von der Ordnerstruktur ab. Schau dir
auf jeden Fall den -printf Befehl von find an.
Das ganze wird dann als Funktion verpackt.
Wenn du das hast:
==== WIRD SO NICHT FUNKTIONIEREN! Dies soll NUR eine Anregung sein! ====
UPUSER="uploaduser"
UPDIR="/home/uploaduser/tmp"
SERVER="servername"
DOMROOT="/srv/www"
find_domains() {
find ... -name "$1" ... -printf ...
}
for datei; do
### Domains mit $datei finden
DOMAINS="`find_domains \"$datei\"`"
### ins uploaddir raufladen
### auskommentiert um erstmal die inst-script Generierung testen
# scp "$datei" "${UPUSER}@${SERVER}:${UPDIR}"
upfile="${UPDIR}/${datei}"
### shell-script auf stdout erzeugen
{
### fuer jede Domain, die die Datei bekommen soll
for dom in $DOMAINS; do
### finde user und gruppe zur jew. Domain
domuser="..."
domgrp="..."
### shell-fragment "install" mit Rechten
cat <