PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL / PHP in einem Linux Script ?!?



Xader
06.03.07, 12:01
Hallo,...

ich habe einen PC mit Suse 10.0. Auf diesem habe ich u.a. das Wake on LAN Tool "wol" installiert. Wenn ich die entsprechenden Befehle in der Konsole eingebe, fährt der gewünschte Rechner ohne Probleme hoch. Zur leichteren Verwaltung, Administration und Nutzung habe ich eine kleine Administrationsseite sowie eine SQL Datenbank für die entsprechenden PC's angelegt. In der Datenbank sind ID, Name, IP und die MAC gespeichert. Über das Web Seite kann ich neue PC's in die Datenbank einpflegen, alte Löschen Einträge ändern und natürlich die PC's hochfahren. Allerdings habe ich ein Problem, in das Script, was beim Klick auf "Alle Hochfahren" gestartet wird, habe ich alle MAC Adressen mit dem dazugehörigen Befehl händisch eingetragen. Es funktoiniert zwar ohne Probleme, allerdings werden die Änderungen in der SQL Datenbank nicht automatisch übernommen. D.h. wenn ich einen PC Eintrag hinzufüge, lösche oder anpasse, wird dieser nicht automatisch auch im Script angepasst. :(

Da man ja nicht so einfach PHP Quellcode in ein Linux Script schreiben kann, habe ich leider keine Ahnung wie ich es verwirklichen kann das er aus meiner Tabelle die Spalte "MAC" ausliest, vor jeder MAC den entsprechenden WOL Befehl schreibt und solang das ganze in einer Schleife macht, bis er alle MACs aus der DB abgearbeitet. Ich habe schon hinbekommen, das er sich mit meiner SQL Datenbank im Script verbindet und auch erfolgreich den Befehl "select * from clients order by ID" ausführt und ausgibt. Also z.B.
" wol 11:22:33:44:55:66
wol AA:BB:CC:DD:EE:FF
..."

Allerdings komme ich nicht weiter!:confused:

Kann mir da vielleicht jemand helfen? Am besten in dem er den Sytax komplett hinschreibt. Die DB heist "wol" und die TB "clients". In der Tabelle befinden sich 4 Spalten: ID, Name, IP, MAC.

Vielen Dank schonmal für die Hilfe.

marce
06.03.07, 12:37
Als Denkanstoss: Du kannst doch in dem Shell-Script die DB auch über den MySQL-Konsolenclient abfragen - einfach denn die Ausgabe davon dem wol vorwerfen...

'ne Komplettlösung will ich persönlich nicht liefern - lieber Hilfe zur Selbsthilfe...

Xader
06.03.07, 13:09
Hmm,...

danke erstmal. Aber da ich noch relativ Neu in der Welt des Linux bin, habe ich den MySQL Konsolen Client nocht nie verwendet, sondern das LAMPP genommen. Wenn meine Gedanken richtig sind, müsste ja auch nen kleiner Cheat das Problem lösen, indem ich in meine DB noch eine Spalte machen, in der ich den entsprechenden Wake on LAN Befehl eintrage, oder?

z.B. "select befehl and mac from client" --> "wol 11:22:33:44:55:66" wäre dann der Befehl, wenn ich die neue Spalte "befehl" nenne, oder? Oder kann er daraus keine Befehle lesen?

marce
06.03.07, 13:30
lesen kannst Du da alles heraus - Du musst der Shell dann nur klar machen, dass es es auch als Befehl interpretieren soll...

Würde ich so aber nicht machen - stell Dir mal vor, jemand hackt in die Spalte "Befehl" ein "rm -r /" oder ein "init 0" rein - also dann doch lieber nur IPs speichern, auslesen, überprüfen und dann als "gesicherter" Parameter dem wol übergeben...

Xader
06.03.07, 14:07
Danke,...

allerdings besteht bei beiden Sachen das gleiche Problem, nämlich das ich nicht weis, wie das funktonier.:rolleyes:

MiGo
06.03.07, 15:07
MySQL / PHP in einem Linux Script ?!?
Es gibt kein "Linux"-Script.
#!/bin/bash sorgt dafür, dass der Scriptinhalt von der bash interpretiert wird,
#!/usr/bin/perl führt den Kram als perlscript aus und
#!/usr/bin/php führt das ganze (wenn php-cli installiert ist und der Kram in <?php ?>-Tags steht) mittels php aus.

Tolles Beispielscript:

[ je@dionysos] ~ (7,0G free) % cat testme

#!/usr/bin/php
<?php
print "voll der php-code!\n";
?>


[ je@dionysos] ~ (7,0G free) % chmod +x testme && ./testme
voll der php-code!
[ je@dionysos] ~ (7,0G free) %


Fazit: Schreibs halt in php, auch das kann man auf der Konsole als Script ausführen.

Xader
08.03.07, 07:06
Ah,.....

danke. Wieder was gelernt. Das mit dem PHP finde ich gut, das es geht. Ich kannte bis jetzt nur "#!/bin/bash".

Also nochmals vielen Dank @ All die mir geantwortet haben und wollten.