Script um shell command auszuführen?

Bash, Shell, PHP, Python, Perl, CGI
linuxnewbie
Posts: 150
Joined: 2003-01-24 16:00

Script um shell command auszuführen?

Post by linuxnewbie »

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.
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: Script um shell command auszuführen?

Post by kahler »

LinuxNewbie wrote:Welche Sprache ist dafür am besten geeignet?
Kommt drauf an, wie du es aufrufen willst (Webbrowser, Konsole oder sonstwie)...

...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
Kurz umrissen...

...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?

Post by linuxnewbie »

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.
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Script um shell command auszuführen?

Post by captaincrunch »

Welche Sprache ist dafür am besten geeignet?
Perl? php? bash?
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.
DebianHowTo
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?

Post by linuxnewbie »

CaptainCrunch wrote:
Welche Sprache ist dafür am besten geeignet?
Perl? php? bash?
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.

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?
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: Script um shell command auszuführen?

Post by kahler »

LinuxNewbie wrote:Ich habe mal gehört das man dazu dann php als cgi brauchen würde, stimmt das?
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.

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?

Post by linuxnewbie »

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.
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.

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

Re: Script um shell command auszuführen?

Post by alexander newald »

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)
fi
So in der Richtung

Alexander Newald