Hallo, Ich habe ein Apache2 Webserver auf einem Raspberry Pi. Über den Webserver schreibe ich einen Wert in eine Datenbank, jetzt möchte ich dieses Wert mit einem Wert aus einer lokalen Datei vergleich und was ausführen am liebsten in einer *.sh, wie bekomme ich diesen Wert von der Datenbank in die Bash-Datei. Der vergleich soll jede Minute erfolgen, da ich über den Webserver eine Zeit in die Datenbank speichert wann was passieren soll. Oder gibt es da einen besseren Lösungsweg? Ich bin ein Anfänger und habe nur Grundkenntnisse in MYSQL,PHP und JS.
DanS S. schrieb: > Über den Webserver schreibe ich einen Wert in eine Datenbank, jetzt > möchte ich dieses Wert mit einem Wert aus einer lokalen Datei vergleich > und was ausführen am liebsten in einer *.sh, wie bekomme ich diesen Wert > von der Datenbank in die Bash-Datei. > > Der vergleich soll jede Minute erfolgen, da ich über den Webserver eine > Zeit in die Datenbank speichert wann was passieren soll. > > Oder gibt es da einen besseren Lösungsweg? Du kannst mit dem Kommandozeilenprogramm mysql(1) natürlich auch Deine Datenbank abfragen und den gewünschten Wert aus der Antwort parsen. MySQL hat außerdem einen Event Scheduler [1,2], mit dem Du SQL Queries, aber natürlich auch Stored Procedures ausführen kannst. Oder Du könntest das, "was passieren soll", mit dem Kommando at(1) als Job für den At-Daemon atd(8) anlegen, statt es in eine Datenbank zu schreiben und von dort zu lesen. Oder Du schreibst das, "was passieren soll", nicht in die Datenbank, sondern als Datei in einen bestimmtes Verzeichnis; die Datei kann dann als Dateinamen den Zeitpunkt der Ausführung erhalten und ein minütlicher Cronjob schaut in das Verzeichnis, ob gerade etwas zur Ausführung ansteht... Es gibt dabei etliche Möglichkeiten; welche für Dich die Beste ist, hängt primär davon ab, "was passieren soll", und sekundär natürlich von Deinen eigenen Fähigkeiten -- Du hast also die Qual der Wahl. ;-) [1] https://dev.mysql.com/doc/refman/5.7/en/events-configuration.html [2] https://dev.mysql.com/doc/refman/5.7/en/create-event.html
du kannst mit der bash nur schwer werte aus einer datenbank auslesen. weil die bash keine "treiber" hat um sich an die datenbank zu verbinden. also… prinzipiell. möglicherweise geht das doch z.b. über "HERE-DOCUMENTS" in der art (ungetestet, wahrscheinlich falsch) [code] mysql - username -p passwort <<EOF select wert from tabelle where... exit EOF | [grep/awk] [code] normalerweise benutzt man eine scriptsprache mit der man sich an die datenbank verbinden, und selects absetzten kann. ich kenne da z.b. perl http://sql-info.de/mysql/examples/Perl-DBI-examples.html aber python kann das mit sicherheit auch.
Kann man mit einem PHP-script, welchen lokal von einer bash ausgeführt wird die Datenbank auslesen und lokal abspeichern? Finde keinen Weg über eine Bash Daten aus der Datenbank auszulesen. Hat jemand damit Erfahrungen? würde gerne bei PHP und JS bleiben und nicht noch zusätzlich perl oder python lernen.
Wie c.m. schon schrieb kann man per Shell-Script ein SELECT absetzen:
1 | mysql --silent --user=xxxx --password=yyyy mysql <<EOF |
2 | select concat(user,"@",host) from user where super_priv="Y" |
3 | EOF |
:
Bearbeitet durch User
DanS S. schrieb: > Kann man mit einem PHP-script, welchen lokal von einer bash > ausgeführt > wird die Datenbank auslesen und lokal abspeichern? > > Finde keinen Weg über eine Bash Daten aus der Datenbank auszulesen. > Hat jemand damit Erfahrungen? > > würde gerne bei PHP und JS bleiben und nicht noch zusätzlich perl oder > python lernen. kein problem. php kann sich (wenn es zur compile-zeit nicht ausgeschaltet wurde - unwahrscheinlich) an mysql verbinden. die (script)sprachen sind sich da btw ziemich ähnlich: connect an db, select vorbereiten, select an db schicken, ergebins(se) in einer loop abholen. google halt "mysql php", da bekommst du mehr ergebnisse als hier antworten ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.