Script um shell command auszuführen?
-
linuxnewbie
- Posts: 150
- Joined: 2003-01-24 16:00
Script um shell command auszuführen?
Ich würde gern ein Script schreiben das in der Datenbank (MySQL) einen Wert prüft. Ist dieser Wert 1, wird ein shell Befehl ausgeführt. Ist dieser Wert 0 wird das Script beendet.
Zudem soll wenn der Wert 1 ist und der shell Befehl ausgeführt wurde der Wert in der DB von 1 auf 0 gestellt werden.
Welche Sprache ist dafür am besten geeignet?
Perl? php? bash?
wie müßte das script ungefähr aussehen?
Bin für jeden Ratschlag und Tipp dankbar.
Zudem soll wenn der Wert 1 ist und der shell Befehl ausgeführt wurde der Wert in der DB von 1 auf 0 gestellt werden.
Welche Sprache ist dafür am besten geeignet?
Perl? php? bash?
wie müßte das script ungefähr aussehen?
Bin für jeden Ratschlag und Tipp dankbar.
Re: Script um shell command auszuführen?
Kommt drauf an, wie du es aufrufen willst (Webbrowser, Konsole oder sonstwie)...LinuxNewbie wrote:Welche Sprache ist dafür am besten geeignet?
...Wie es aussehen müsste, kann ihc dir erst sagen, nachdem du die Sprache festgelegt hast.
Aber im Prinzip so:
Code: Select all
SELECT bla FROM blubb WHERE foo=bar
if (bla == 1)
{
<Befehl ausführen>
}
INSERT INTO blubb (bla) VALUES (0) WHERE foo=bar
...natürlich weiß ich, dass die SQL Befehle etc nicht so ganz stimmen, aber vom Prinzip her funtionierts so.
-
linuxnewbie
- Posts: 150
- Joined: 2003-01-24 16:00
Re: Script um shell command auszuführen?
Es soll eine Art Admintool werden für Domains im Bereich Weiterleitung.
Die Hauptsprache wäre php, also die Adminoberfläche mit MySQL Anbindung.
Nun soll man ähnlich wie Confixx eine Domain eintragen können und zb User eine Domain zuweisen, wodurch durch ein Kundeninterface dann dort weiterleitungen emailweiterleitungen ect eingestellt werden können.
Wenn eine Ã?nderung gemacht wird, soll das durch eine Flag in der DB, also der Wert von 0 auf 1 erhöht werden.
Das Admintool in php etc ist kein Problem für mich, was mir Probleme bereiten würde, wäre der Cronjob der dann zb alle 2 Minuten ein Script aufruft und die Flag, den Wert in der MySQL prüft ob dieser auf 1 steht. Steht er auf 1 wird ein Shell Befehl zb "rcapache reload" ausgeführt und danach der Wert von 1 auf 0 gestellt.
Da es die beste Sicherheit garantiert wenn man das Admintool als php auf einer gewissen userid laufen läßt und dann per Cronjob als root die db abfrägt und dann die Befehle ausgeführt werden, so das man von der Adminoberfläche keine Direkten Shell Befehle ausführen kann.
Und das mit dem Prüfen der Flag in der DB finde ich auch Sinnvoll, da zb das Counterscript bei Confixx dafür sorgt das alle Programme innerhalb gewisser Minutenanzahl reloaded werden, auch wenn keine Ã?nderung stattfindet.
Die Hauptsprache wäre php, also die Adminoberfläche mit MySQL Anbindung.
Nun soll man ähnlich wie Confixx eine Domain eintragen können und zb User eine Domain zuweisen, wodurch durch ein Kundeninterface dann dort weiterleitungen emailweiterleitungen ect eingestellt werden können.
Wenn eine Ã?nderung gemacht wird, soll das durch eine Flag in der DB, also der Wert von 0 auf 1 erhöht werden.
Das Admintool in php etc ist kein Problem für mich, was mir Probleme bereiten würde, wäre der Cronjob der dann zb alle 2 Minuten ein Script aufruft und die Flag, den Wert in der MySQL prüft ob dieser auf 1 steht. Steht er auf 1 wird ein Shell Befehl zb "rcapache reload" ausgeführt und danach der Wert von 1 auf 0 gestellt.
Da es die beste Sicherheit garantiert wenn man das Admintool als php auf einer gewissen userid laufen läßt und dann per Cronjob als root die db abfrägt und dann die Befehle ausgeführt werden, so das man von der Adminoberfläche keine Direkten Shell Befehle ausführen kann.
Und das mit dem Prüfen der Flag in der DB finde ich auch Sinnvoll, da zb das Counterscript bei Confixx dafür sorgt das alle Programme innerhalb gewisser Minutenanzahl reloaded werden, auch wenn keine Ã?nderung stattfindet.
-
captaincrunch
- Userprojekt

- Posts: 7066
- Joined: 2002-10-09 14:30
- Location: Dorsten
- Contact:
Re: Script um shell command auszuführen?
Die, in der auch der REst geschrieben ist. So hast du alles konsistent. Da es wohl eine "Weboberfläche" haben soll, würde sich hier wohl PHP anbieten, wobei für das reine Script Perl und Shell genau so in Frage kämen.Welche Sprache ist dafür am besten geeignet?
Perl? php? bash?
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
-
linuxnewbie
- Posts: 150
- Joined: 2003-01-24 16:00
Re: Script um shell command auszuführen?
CaptainCrunch wrote:Die, in der auch der REst geschrieben ist. So hast du alles konsistent. Da es wohl eine "Weboberfläche" haben soll, würde sich hier wohl PHP anbieten, wobei für das reine Script Perl und Shell genau so in Frage kämen.Welche Sprache ist dafür am besten geeignet?
Perl? php? bash?
Kann man denn ein php Script ohne probleme in der shell ausführen wie ein sh oder pl script? wenn ja würde ich das natürlich bevorzugen.
Ich habe mal gehört das man dazu dann php als cgi brauchen würde, stimmt das?
Re: Script um shell command auszuführen?
Da hast du richtig gehört. Aber meiner Meinung nach sollte man PHP sowieso als CGI laufen lassen (zumindest in einer shared Hosting Umgebung), weil man dann nämlich suPHP verwenden kann und so die Daten der anderen User schützt.LinuxNewbie wrote:Ich habe mal gehört das man dazu dann php als cgi brauchen würde, stimmt das?
Ansonsten würde ich dir Perl empfehlen, da es damit relativ einfach ist gegenüber der shell, die mySQL Ausgabe
1. zu erhalten und
2. auszuwerten...
...Ich habe auch schon shell Scripte gemacht, die das erledigt haben, aber das war immer ein großer grep und cut Aufwand.
-
linuxnewbie
- Posts: 150
- Joined: 2003-01-24 16:00
Re: Script um shell command auszuführen?
habe gerade bei php.net gelesen das man php nicht als cgi braucht für sowas, zumindest seit der php4.3.0 nicht mehr, da dort standard egal ob cgi oder modul ein CLI binary mitgeliefert wird.kahler wrote: Aber meiner Meinung nach sollte man PHP sowieso als CGI laufen lassen (zumindest in einer shared Hosting Umgebung), weil man dann nämlich suPHP verwenden kann und so die Daten der anderen User schützt.
Ich werde mir aber trotzdem mal php cgi anschauen.
Muß man bei php als cgi was besonders beachten für die normalen php scripte? kann man diese dann wie gewohnt auf dem webserver aufrufen?
-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: Script um shell command auszuführen?
Code: Select all
#!/bin/bash
FLAG=`echo "SELECT flag FROM db.tabelle WHERE bedingung"|mysql -u benutzer --password=passwort -h mysqlserver `
if [ "$FLAG" = "1" ] ; then
echo "UPDATE db.tabelle SET flag = '0' WHERE bedingung" | mysqlwieoben
irgendwie_apache_reloaden (zB. /etc/init.d/apache reload)
fiAlexander Newald