Moin Lisde,
immer wenn ich meine, dieses Betriebssystem halbwegs kapiert zu haben,
passiert etwas, dass mir meinen DAU-Status wieder auf die Stirne meißelt
:)
Mein Ziel: Ich möchte eine (geheime) MSN anrufen, die meinen Server zur
Internet-Einwahl veranlasst und er seine dynamische IP auf meinen
externen Webserver schreibt. Zunächst möchte ich nur Schritt 2 lösen,
also Hochstellen der aktuellen IP-Adresse.
Das Listenarchiv spuckt bei der Suche nach "ip upload" zwei fertige
Perl-Scripte von Jan Kirchhoff und David Haller aus:
http://lists.suse.com/archives/suse-linux/2001-Apr/4535.html und
http://lists.suse.com/archives/suse-linux/2001-Apr/4713.html.
Letzteres erscheint mir eleganter, beide aber funktionieren bei mir nur
unzureichend. Rufe ich sie standalone von der Shell aus auf, klappt
alles. Rufe ich sie aus /etc/ppp/ip-up.local aus, klappt es nicht: je
nach Script ist die IP-Adresse laut erfolgreich hochgeladener HTML-Datei
0.0.0.0 oder schlicht nichts.
Nach peinlich langer Fehlersuche glaube ich das Problem eingekreist zu
haben. M.E. liegt es am Umleiten der stdout von ifconfig in eine
temporäre Datei. Beim Aufruf von ip-up.local in ip.up wird nämlich
stdout in den logger gepipt und daher kommt die Ausgabe nicht in der
temporären Datei an. (btw auch nicht in /var/log/messages, aber das muss
ich nicht kapieren).
Meine ip-up.local hänge ich mal mit Ergebnissen in Kommentaren am Ende
an.
Jetzt meine Frage: Wie kann ich die Ausgaben eines Programmes umleiten,
wenn an "höherer" Stelle (in einem aufrufendem Script) die Ausgabe
bereits in den Logger geleitet wird?
Es erscheint mir nicht sinnvoll, die Logger-Umleitung in ip-up zu
entfernen. Oder bleibt mir gar nichts anderes übrig?
Dank und Gruß,
Alfred
---mein selbstgebasteltes (!) Attachment---
Meine Tests, relevante Stellen kommentiert:
---ip-up.local---
#!/bin/bash
echo `date` > /tmp/online.flag
chmod 666 /tmp/online.flag
/usr/bin/fetchmail -v >>/var/log/fetchmail 2>&1 &
/usr/sbin/netdate ntp1.ptb.de
/sbin/hwclock --systohc
echo 'jetzt ifconfig lesen'
# Diese Ausgabe landet wie erwartet in /var/log/messages
echo `/sbin/ifconfig ippp0 |/bin/grep "inet Adresse"`
# Ausgabe verschwindet im Orkus, sprich ist 0 Byte groß.
# Ahso, das da oben ist ein Backtick, nur so zum Test.
/sbin/ifconfig ippp0 |/bin/grep "inet Adresse" > /tmp/ip.tmp
# /tmp/ip.tmp ist 0 Byte groß.
/etc/ppp/ipupload
# Das hier ist derzeit das perl-script von David N. Haller.
# Die Umleitung von stdout erzeugt auch darin nur eine
# 0 Byte große temp-Datei.
--- ip-ip.local ende ---
--
Alfred Poschmann