Hallo, Am Son, 29 Okt 2006, Al Bogner schrieb:
Am Sonntag, 29. Oktober 2006 02:00 schrieb David Haller:
Ja, da muss man beim Quoten ziemlich aufpassen ;)
Das funktioniert:
WARN="admin@domain.tld" NUTZER="user" DOMAIN="domain.tld" [..] # Einrückungen wegen Posting verändert ssh "${NUTZER}@${DOMAIN}" ' { if test `stat -c "%a" ~/public_html` -ne '"${DEFAULTDIRCHK}"'; then \ find ~/public_html -type d -print0 | xargs -r -0 chmod '"${DEFAULTDIR}"'; \ echo "Verzeichnisrechte neu gesetzt"; \ fi; \ } 2>&1 | mail -s "Rechte auf '"${DOMAIN}"'" '"${WARN}"''
So kommt ein Testmail an, verändere ich aber etwas, dann kommt es vermutlich wegen falschem Quoting, dazu, dass Worte oder Variablen im Subject als Mailuser betrachtet werden und and die Standardomäne versandt werden.
Ich würde gerne etwas in der Art (ohne richitges Quoting) haben: } 2>&1 | mail -s "Rechte auf '"${DOMAIN}"'" auf $DEFAULTDIR ^ Mit dem " hier beendest du das Argument fuer -s "" gesetzt '"${WARN}"''
Genau im Quoting liegt das Problem, du musst darauf achten, was lokal
expandiert werden soll und was wie es uebergeben wird:
-s "Rechte auf '"${DOMAIN}"' auf '"$DEFAULTDIR"' gesetzt" '"${WARN}"
Hab's sogar getestet. Achte mal darauf, wie die shell das ganze an ssh
uebergibt:
$ H=dhaller.de; W=dh D="755"
$ set -x
$ ssh dh@localhost 'set -x; echo "body" | mail -s "Rechte auf '"${H}" auf '"$D"' gesetzt" '"${W}"
+ ssh dh@localhost 'set -x; echo "body" | mail -s "Rechte auf dhaller.de auf 755 gesetzt" dh'
dh@localhost's password:
+ echo body
+ mail -s 'Rechte auf dhaller.de auf 755 gesetzt' dh
$ ^ ^ die sind aus den
-s ".." entstanden!
Und die Mail wird passend erzeugt. Nochmal auseinandergepfriemelt:
wir sind im ersten offenen '' Paar: ssh u@host '...
| mail -s " ## remote " auf
Rechte auf ' ## lokal ' (ssh-Arg) zu
"${DOMAIN}" ## lokal geschuetzt Variable einsetzen
' ## lokal ' (ssh-Arg) wieder auf
auf ' ## lokal ' (ssh-Arg) wieder zu
"$DEFAULTDIR" ## lokal geschuetzt Variable einsetzen
' ## lokal ' (ssh-Arg) wieder auf
gesetzt" ## remote " zu
' ## lokal ' (ssh-Arg) wieder zu
"${WARN}" ## lokal geschuetzt Variable einsetzen
## hier darf kein Leerzeichen stehen, sonst
## macht die shell das zu einem weiteren
## lokalen Argument fuer die ssh.
## Weggelassen wird hier, weil das lokale '
## schon wieder zu ist der Abschluss:
' ## lokal ' (ssh-Arg) wieder auf
-- -fbla@blubb ## z.B. noch Argumente fuer das remote mail
' ## lokal ' (ssh-Arg) wieder zu
Wie geschrieben, ich wuerde lokal mailen und cat < Bei den Varianten, die ich probiert haben, gibt es immer ein Mal an auf@,
gesetzt@ usw. s.o. Wie erreiche ich im Testkörper des Mails eine Auflistung _vor_ Änderung der
Rechte und _nach_? Vielleicht sollte man die Listung vor der Änderung in eine
Variable schreiben Besser nicht. Letztlich möchte ich es nicht mit mail, sondern mit mutt versenden. Remote oder Lokal? Und welchen Grund haettest du, nicht lokal zu
mailen? Mutt laesst sich gut verwenden. Wie soll ich am besten mehrere Domains mit dazugehörigem User abarbeiten? for udom in user1@host1 user2@host2; do
cat <