HTTP-Zugriffe per Crontab auslösen

Allgemeine Fragen zu Themen die sonst nirgendwo passen

Moderator: Lancom-Systems Moderatoren

Antworten
omd
Beiträge: 105
Registriert: 18 Jul 2005, 11:47

HTTP-Zugriffe per Crontab auslösen

Beitrag von omd »

Hallo,

um neben dem verwendeten dyndns-Dienst mehr Kontrolle über den Online-Status eines Routers zu erhalten, würde ich gerne ähnlich der Befehle in der Aktionstabelle in der Crontab http-Zugriffe eintragen. Diese sollen in einem Intervall (alle paar Minuten) ein Script auf einem externen Webserver aufrufen, welches die Zugriffe mit Datumsstempel und Remote IP in ein Log schreibt.

Die Frage wäre, wie/ob man mit einem Befehl diese http-Zugriffe ausführen könnte. In der Aktionstabelle ist ja einfach nur eine URL eingetragen -- geht das in der crontab (wo ja Kommandozeilenbefehle eingetragen werden) auch? Es braucht einfach nur eine statische URL zu sein, ohne Variablenübergabe.

Gruß,
omd
LC 1811 / LCOS 5.08
Benutzeravatar
LoUiS
Site Admin
Site Admin
Beiträge: 5033
Registriert: 07 Nov 2004, 18:29
Wohnort: Aix la Chapelle

Beitrag von LoUiS »

Hi,
Die Frage wäre, wie/ob man mit einem Befehl diese http-Zugriffe ausführen könnte. In der Aktionstabelle ist ja einfach nur eine URL eingetragen -- geht das in der crontab (wo ja Kommandozeilenbefehle eingetragen werden) auch? Es braucht einfach nur eine statische URL zu sein, ohne Variablenübergabe.
nein, das ist nicht moeglich, in der CRON-Tab koennen nur Befehle ausgefuehrt werden, die auch ueber die Telnet/SSH Console ausgefuehrt werden koennen.


Ciao
LoUiS
Dr.House hat geschrieben:Dr. House: Du bist geheilt. Steh auf und wandle.
Patient: Sind Sie geisteskrank?
Dr. House: In der Bibel sagen die Leute schlicht "Ja, Herr" und verfallen dann ins Lobpreisen.
Benutzeravatar
alf29
Moderator
Moderator
Beiträge: 6205
Registriert: 07 Nov 2004, 19:33
Wohnort: Aachen
Kontaktdaten:

Beitrag von alf29 »

Moin,

doch, das sollte gehen - die Einträge in der Cron-Tabelle werden vom gleichen
Modul wie Einträge in der Aktionstabelle ausgeführt. Der einzige Unterschied
ist, daß man bei Einträgen in der Cron-Tabelle das 'exec:' nicht davorschreiben
muß. Ein
geht also durchaus als Eintrag in der Cron-Tabelle - genauso wie 'mailto:'

Gruß Alfred
Benutzeravatar
LoUiS
Site Admin
Site Admin
Beiträge: 5033
Registriert: 07 Nov 2004, 18:29
Wohnort: Aix la Chapelle

Beitrag von LoUiS »

Moin Alfred,

oh, das wusste ich nicht. Dann nehme ich alles zurueck und behaupte prompt das Gegenteil.
Danke, man lernt nie aus. ;)


Ciao
LoUiS
Dr.House hat geschrieben:Dr. House: Du bist geheilt. Steh auf und wandle.
Patient: Sind Sie geisteskrank?
Dr. House: In der Bibel sagen die Leute schlicht "Ja, Herr" und verfallen dann ins Lobpreisen.
omd
Beiträge: 105
Registriert: 18 Jul 2005, 11:47

Beitrag von omd »

Hallo,

danke für die Auskunft. Hatte jetzt erst Gelegenheit, es auszuprobieren... funktioniert tatsächlich. :) Hab' jetzt ein schönes kleines Logfile zum Onlinestatus über die Zeit auf einem externen Webserver.

Gruß,
omd
LC 1811 / LCOS 5.08
Benutzeravatar
LoUiS
Site Admin
Site Admin
Beiträge: 5033
Registriert: 07 Nov 2004, 18:29
Wohnort: Aix la Chapelle

Beitrag von LoUiS »

Hi,

das ist sicher auch fuer andere interessant, wie waers mit dem Script und dem Eintrag in der CRON fuer die FAQ Section?


Ciao
LoUiS
Dr.House hat geschrieben:Dr. House: Du bist geheilt. Steh auf und wandle.
Patient: Sind Sie geisteskrank?
Dr. House: In der Bibel sagen die Leute schlicht "Ja, Herr" und verfallen dann ins Lobpreisen.
omd
Beiträge: 105
Registriert: 18 Jul 2005, 11:47

Beitrag von omd »

LoUiS hat geschrieben:Hi,

das ist sicher auch fuer andere interessant, wie waers mit dem Script und dem Eintrag in der CRON fuer die FAQ Section?


Ciao
LoUiS
Hallo. Hier kommt ein entsprechender Beitrag.


Dynamische IP auf einem externen Webserver protokollieren

Da LANCOM-Router eine Möglichkeit zum Anstoßen von http-get-Requests mitbringen, läßt sich damit recht einfach ein Logfile auf einem Webserver-Konto führen. Dies ist hilfreich, um IPs bei dynamischer Adressvergabe festzuhalten.

Zwei Varianten sind möglich: zeitgesteuerte Protokollierung und ereignisbasierte Protokollierung


I) Zeitgesteuert

In einem vorgegebenen Intervall (z.B. alle 15 Minuten) wird das Protokollscript auf dem Webserver aufgerufen und so auf dem Webserver ein Protokolleintrag erzeugt, der den Zugriffszeitpunkt und die dabei verwendete IP enthält.

Ein Eintrag wird routerseitig in der Cron-Tabelle erstellt ( LANconfig / Datum/Zeit / Cron-Tabelle ... / Hinzufuegen ... ):

- Eintrag aktiv: ja ;)
- Echtzeit: ja
- Minuten: /15 (d.h. alle 15 Minuten, bzw. je nach Wunsch)
- Felder Stunden bis Monate bleiben leer, jedenfalls sofern das Abfrageintervall kleiner als 1h sein soll
- Befehle: http://www.webserver0815.de/meinverzeic ... script.php (bspw.)

Wesentlich ist die "Befehle"-Zeile. Dies ist die URL des Scriptes, welches regelmäßig per http aufgerufen wird. Der genaue Aufruf ist abhängig von der Implementierung eines solchen Scripts, und natürlich vom Webserver, auf dem es liegt.

(Anmerkung: Die Möglichkeit der Verwendung einer http-Adresse als Befehl in der Cron-Tabelle ist nicht dokumentiert und könnte sich ggf ändern.)


II) Ereignisbasiert

Das Protokollscript kann auch genau dann aufgerufen werden, wenn eine neue Internetverbindung aufgebaut wurde (und somit der Router eine neue IP erhalten hat).

Ein Eintrag wird routerseitig in der Aktions-Tabelle erstellt ( LANconfig / Kommunikation / Aktions-Tabelle ... / Hinzufuegen ... ):

- Name: frei wählbar, z.B. IP-PROTOKOLLIERUNG
- Gegenstelle: die konfigurierte InternetVerbindung
- Sperrzeit: 0
- Verbindungs-Ereignis: Aufbau
- Aktion: entspricht dem "Befehle"-Eintrag in der Cron-Tabelle, s.o.
- Ergebnis-Auswertung: (nichts, hier wird nichts ausgewertet)


Zeit- oder ereignisgesteuerte Protokollierung?

Beide Varianten haben Vorzüge. Mit der Cron-Tabellen-Methode werden kontinuierlich Einträge in die Protokolldatei geschrieben. D.h. im Falle des Ausfalls der Internetanbindung ist ersichtlich, in welchem Zeitraum keine Internetverbindung bestand. Die Aktions-Tabelle hingegen aktualisiert die IP genau dann, wenn diese sich ändert. Damit ist im Protokoll stets die aktuelle IP ersichtlich.
Um beide Vorzüge zu nutzen, lassen sich Einträge in Aktionstabelle und Crontabelle kombinieren.



Wie sieht ein auf dem Webserver zu hinterlegendes Protokollierungsscript aus?

Die Funktion ist überschaubar: Bei jedem Zugriff wird an eine Protokolldatei (Textdatei) eine Zeile angehängt, die den Zugriffszeitpunkt und die IP des Routers enthält. Die Router-IP (bzw. die IP des Script-Aufrufers) kann das Script vom Webserver abfragen - der Router braucht sie nicht gezielt übergeben.

In PHP erfüllen folgende Zeilen (o.ä.) diese Aufgabe:

Code: Alles auswählen

<?php

$logdatei = 'accesslog.txt';
$zeitstempel = date('r');

$remote_ip = $_SERVER['REMOTE_ADDR'];
$eintrag = "$zeitstempel\t$remote_ip\n";

$file = fopen($logdatei, 'a');
if ($file==FALSE) {
	die('Fehler beim Oeffnen der Logdatei ' . $logdatei);
}
$schreibstatus = fwrite($file, $eintrag);
if ($schreibstatus==FALSE) {
	die('Fehler beim Schreiben in die Logdatei ' . $logdatei);
}
fclose($file);

?>
Ergebnis:

Code: Alles auswählen

Sun, 09 Oct 2005 22:13:19 +0200	84.174.128.126
Sun, 09 Oct 2005 22:14:03 +0200	84.174.128.126
Sun, 09 Oct 2005 22:14:06 +0200	84.174.128.126
Es empfiehlt sich das Verzeichnis auf dem Webserver, welches das Script und Logfile enthält, mit einem Passwort zu schützen. Außerdem ist zu beachten, dass die Logdatei in der Größe beliebig anwächst.


iplog.php
Es sei auf eine etwas verspieltere Variante des Protokollierungsscripts (iplog.php) hingewiesen. Sie unterstützt anhand einer beim Aufruf übergebenen ID (je Gerät oder Ereignis) das Führen mehrerer Protokolle und bietet darüber sowie über die jeweils letzten IPs eine Übersicht:

http://omd.om.funpic.de/ (Demo zum Anclicken und Ausprobieren sowie Download)


Protokollierung von VPN-Verbindungen
Noch ein Hinweis: Da VPN-Verbindungen auf dem LANCOM-Router wie Internetverbindungen eine "Gegenstelle" darstellen, läßt sich auch hier ereignisbasiert über die Aktions-Tabelle protokollieren. In Verbindung mit oben genanntem iplog.php-Script und jeweils einer eigenen ID je VPN-Gegenstelle (z.B. "lancom1-vpnclient1-connect") läßt sich so ein rudimentäres Protokoll über den Verbindungsaufbau mit Gegenstellen/Clients führen.[/b]
LC 1811 / LCOS 5.08
omd
Beiträge: 105
Registriert: 18 Jul 2005, 11:47

Beitrag von omd »

ist leider etwas sperrig geworden...

Gruß,
omd
LC 1811 / LCOS 5.08
Benutzeravatar
LoUiS
Site Admin
Site Admin
Beiträge: 5033
Registriert: 07 Nov 2004, 18:29
Wohnort: Aix la Chapelle

Beitrag von LoUiS »

Hi OMD,

das macht nichts, ist klasse geworden, vielen Dank! Ich habe dazu einen neuen Eintrag in der FAQ Section gemacht.


Ciao
LoUiS
Dr.House hat geschrieben:Dr. House: Du bist geheilt. Steh auf und wandle.
Patient: Sind Sie geisteskrank?
Dr. House: In der Bibel sagen die Leute schlicht "Ja, Herr" und verfallen dann ins Lobpreisen.
Antworten