Moin,
auf einer Webradio-HP wird mittels Ajax der aktuell laufende Song angezeigt. Jetzt möchten aber auch andere HP-Betreiber diese Daten in ihre Seiten einbinden. Da es aber leider die Sicherheits-Einstellungen der Browser nicht zulassen, per Ajax/Javascript auf fremde Domains zuzugreifen, habe ich ein PHP-Script programmiert, welches mittels eines bash-scripts aller 5 Sekunden den aktuell laufenden Song in eine Datenbank einträgt, damit die anderen HP-Betreiber per "view" darauf zugreifen können.
Gibt es eine Geheimtip, wie ein cronjob aller 5 Sekunden gestartet werden kann oder wie kann ich jetzt sicherstellen, dass dieses bash-script ständig läuft und nach einem eventuellen Absturz wieder neu gestartet wird? Monit und Nagios sind installiert und überwachen die üblichen Verdächtigen...
Gruß René Thiel (Rennkuckuck) mailto:reti@rennkuckuck.de -- http://rennkuckuck.de - Die Rumänien-Seiten http://rtol.de - Dynamische Webseiten mit PHP, MySQL und CSS
Guten Morgen auch,
PHP-Script programmiert, welches mittels eines bash-scripts aller 5 Sekunden den aktuell laufenden Song in eine Datenbank einträgt, damit die anderen HP-Betreiber per "view" darauf zugreifen können.
<murmel>Shell-Injection-Attacks sind gefährlich</murmel>
Gibt es eine Geheimtip, wie ein cronjob aller 5 Sekunden gestartet werden kann oder wie kann ich jetzt sicherstellen, dass dieses bash-script ständig läuft und nach einem eventuellen Absturz wieder neu gestartet wird? Monit und Nagios sind installiert und überwachen die üblichen Verdächtigen...
i) script per cron sekündlich aufrufen, das script schaut dann nach, ob gerade eine durch 5 sec div-bare Uhrzeit ist
ii) 12 Einträge im cron für die jeweiligen sec
Viele Grüße Fabian
On Sunday 28 December 2008, Fabian Hänsel wrote:
Gibt es eine Geheimtip, wie ein cronjob aller 5 Sekunden gestartet werden kann oder wie kann ich jetzt sicherstellen, dass dieses bash-script ständig läuft und nach einem eventuellen Absturz wieder neu gestartet wird? Monit und Nagios sind installiert und überwachen die üblichen Verdächtigen...
i) script per cron sekündlich aufrufen, das script schaut dann nach, ob gerade eine durch 5 sec div-bare Uhrzeit ist
ii) 12 Einträge im cron für die jeweiligen sec
Hint 1: es gibt auch "*/5"
Hint 2: nützt aber nix, weil cron versteht nur Minuten
Also:
a) selbst eine minimale Variante von cron schreiben
b) Per cron aller paar Minuten ein guard-Script starten das nachschaut ob es noch einen Prozess mit dem korrekten Namen gibt und ihn nötigenfalls neu startet
zu b: nehmen wir mal an das Script heißt /usr/local/bin/songcopy, dann sähe das guard-Script so aus: #!/bin/sh ps ax|grep [s]ongcopy || (/usr/local/bin/songcopy & )
die [] bei grep stellen sicher dass es nicht sich selbst matcht, den Rest zu interpretieren und zu optimieren überlasse ich Dir als Übungsaufgabe
Konrad
Konrad Rosenbaum schrieb:
#!/bin/sh ps ax|grep [s]ongcopy || (/usr/local/bin/songcopy & )
Perfekt, danke vielmals!
<grübel>Könnte man eigentlich auch selber draufkommen...</grübel>
Gruß René Thiel (Rennkuckuck) mailto:reti@rennkuckuck.de -- http://rennkuckuck.de - Die Rumänien-Seiten http://rtol.de - Dynamische Webseiten mit PHP, MySQL und CSS
Fabian Hänsel schrieb:
PHP-Script programmiert, welches mittels eines bash-scripts aller 5 Sekunden den aktuell laufenden Song in eine Datenbank einträgt, damit die anderen HP-Betreiber per "view" darauf zugreifen können.
<murmel>Shell-Injection-Attacks sind gefährlich</murmel>
Wie ist das jetzt gemeint? Der Remote-User bekommt durch dieses "view" ausschließlich select-Rechte für dieses eine "view".
i) script per cron sekündlich aufrufen, das script schaut dann nach, ob gerade eine durch 5 sec div-bare Uhrzeit ist ii) 12 Einträge im cron für die jeweiligen sec
Wie Konrad Rosenbaum schon schrieb: "cron versteht nur Minuten"...
Gruß René Thiel (Rennkuckuck) mailto:reti@rennkuckuck.de -- http://rennkuckuck.de - Die Rumänien-Seiten http://rtol.de - Dynamische Webseiten mit PHP, MySQL und CSS
On Monday 29 December 2008, Rene Thiel wrote:
Fabian Hänsel schrieb:
<murmel>Shell-Injection-Attacks sind gefährlich</murmel>
Wie ist das jetzt gemeint? Der Remote-User bekommt durch dieses "view" ausschließlich select-Rechte für dieses eine "view".
Gemeint ist: falls das Script von irgendwo (Homepage-Betreiber oder sogar User via Browser/Server) Parameter bekommt, dann solltest Du verdammt gut aufpassen wie Du damit umgehst.
Und: pass auf was überhaupt alles ausführbar ist - manchmal reicht die kleinste Unachtsamkeit für einen Angriff auf root (Privilege Escalation).
Konrad
Fabian Hänsel schrieb:
PHP-Script programmiert, welches mittels eines bash-scripts aller 5 Sekunden den aktuell laufenden Song in eine Datenbank einträgt, damit die anderen HP-Betreiber per "view" darauf zugreifen können.
<murmel>Shell-Injection-Attacks sind gefährlich</murmel>
Wie ist das jetzt gemeint? Der Remote-User bekommt durch dieses "view" ausschließlich select-Rechte für dieses eine "view".
Neben den schon genannten Parametern sind Shellskripte auch sehr anfällig für Umgebungsvariablen - sie vertrauen auf so einige davon und lassen sich damit gern zu Unsinn überreden.
Wie Konrad Rosenbaum schon schrieb: "cron versteht nur Minuten"...
Asche auf mein Haupt.
Viele Grüße Fabian
Fabian Hänsel schrieb:
PHP-Script programmiert, welches mittels eines bash-scripts aller 5 Sekunden den aktuell laufenden Song in eine Datenbank einträgt, damit die anderen HP-Betreiber per "view" darauf zugreifen können.
<murmel>Shell-Injection-Attacks sind gefährlich</murmel>
Wie ist das jetzt gemeint? Der Remote-User bekommt durch dieses "view" ausschließlich select-Rechte für dieses eine "view".
Neben den schon genannten Parametern sind Shellskripte auch sehr anfällig für Umgebungsvariablen - sie vertrauen auf so einige davon und lassen sich damit gern zu Unsinn überreden.
Jetzt verstehe ich, neee, so läuft das natürlich nicht.
Das bash-script soll nur das PHP-Script regelmäßig ausführen, welches die Daten selbsttätig sammelt und in die DB schreibt. Sozusagen als Alternative zu einem cron-job, weil cron eben keine Sekunden kennt. Das hat mit den anderen HP-Betreibern gar nix zu tun.
Was die anderen HP-Betreiber bekommen, ist lediglich der Inhalt eines einzigen Feldes. Die zur Verfügung gestellten Zugangsdaten gestatten keinerlei Zugang zu den Scripten, noch zu einer Datenbank-Tabelle, sondern ausschließlich das select-Recht für ein einziges MySQL-view.
Gruß René Thiel (Rennkuckuck) mailto:reti@rennkuckuck.de -- http://rennkuckuck.de - Die Rumänien-Seiten http://rtol.de - Dynamische Webseiten mit PHP, MySQL und CSS
lug-dd@mailman.schlittermann.de