Hallo Thilo, * Thilo A. Coblenzer schrieb am 16.Jul.2001:
Also nocheinmal: Ich habe einen UGate-Router und möchte per Skript die aktuelle IP des Routers in eine Datei schreiben. Dazu lade ich per wget die html-Seite des Routers herunter, unter der ich die IP finde.
So sieht mein Skript aus: cd /home chmod ugo+w /home/st_poe.htm chmod ugo+w /home/IP.txt rm /home/st_poe.htm rm /home/IP.txt
Warum änderst Du die Rechte, wenn Du es doch gleich löschst? Wenn Du eine Datei löschst, mußt Du das Schreibrecht auf dem Verzeichnis haben, denn das änderst Du ja. Die Rechte auf der Datei sind egal. Das heißt normalerweise gibt er eine Warnung aus, wenn man nicht die Schreibrechte auf der Datei hat, die man löschen will, aber löschen kann man sie trotzdem. Um diese Warnung zu vermeiden gib dem rm die Option -f mit. Also: cd /home rm -f /home/st_poe.htm rm -f /home/IP.txt Warum wechselst Du eigentlich nach /home um denn doch den vollen Pfad anzugeben? Im Übrigen würde ich sowas nicht unmittelbar unter /home einfügen. In /home sollten nur Verzeichnisse stehen. Und zwar für jeden echten User, außer root, genau eins. Sowas gehört entweder im Homverzeichnis eines Users oder irgendwo unter /usr/local, aber auch nicht unmittelbar darunter, wenn es von mehr als einem User gebraucht wird.
grep -A 1 'I.P. Address' st_poe.htm | tail -1 | cut -f2 -d">" | cut -f1 -d"<" >IP.txt
Da kann ich nichts zu sagen, da ich nicht weiß wie st_poe.htm aussieht. Könnte aber so hinkommen. Ginge sicherlich mit sed einfacher.
chmod ugo-w /home/st_poe.htm chmod ugo-w /home/IP.txt
Ist es wichtig, daß Du keine Schreibrechte auf diesen Teilen hast? Wie gesagt, löschen kann es jeder, der Schreibrechte auf dem Verzeichnis hat.
Ich bin sicher das geht auch viel schöner und eleganter, aber ich bin schon sehr froh mit dem hier.
Wenn ich das Skript per Hand ausführe funtkioniert das ganze auch. Jetzt habe ich einen Cron-Job gebaut. Natürlich als User thilo, dem auch das Skript und die Dateien gehört.
In der /var/log/messages steht auch immer das: l 16 07:05:00 linux /USR/SBIN/CRON[449]: (thilo) CMD (./home/ip_auslesen.sh)
Und diese tolle Mail bekomme ich auch immer (kann man die Abstellen?).
Du bekommst alle Ausgaben und Fehlerausgaben, die das Skript hat zugemailt. Wo sollte cron die auch sonst hinschreiben? Es ist ja keinem Bildschirm zugeordnet.
Nur die Sache funtkioniert per cron nicht mehr! In er Datei IP:txt steht immer eine alte IP. Per Hand geht es!
Woran kann das liegen?
Merkwürdig. Im ersten Moment würde ich sagen, es liegt daran, daß cron nur einen sehr eingeschränkte Umgebung hat. Da wäre es keine schlechte Idee alle Befehle mit vollen Pfad anzugeben. Aber Du hast nur Befehle aus /usr/bin benutzt, die hat sogar cron im Pfad. Was soll der . vor /home/ip_auslesen.sh? Vielleicht liegt es daran. Ansonsten gebe zu allen Befehlen den vollen Pfadnamen an: /bin/rm .. /usr/bin/grep ..... | /usr/bin/tail .... Bernd -- ROTFL = Rolling On The Floor, Laughing = Auf dem Boden wälzen, lachend. SCNR = Sorry, Could Not Resist = Sorry, Ich konte nicht wiederstehen. AFAIK = As Far As I Know = So weit ich weis|BTW = By The Way = Nebenbei bemerkt IMHO = In My Humble Opinion = meiner bescheidenen Meinung nach |Zufallssig. 9