You are not logged in.

wcf.regNote.message

ShaoKhan

www.Spiegelwelt.com

  • "ShaoKhan" started this thread

Posts: 393

Location: 127.0.0.1

Occupation: EDV Dienstleister

  • Send private message

1

Friday, August 3rd 2007, 4:23pm

Shell Script erfolgreich ?

Wie kann ich überprüfen, ob ein Script erfolgreich ausgeführt wurde ?

PHP Source code

1
exec($test);


...is die Zeile und ich will prüfen, ob es erfolgreich war oder nicht.

Mit ...

PHP Source code

1
2
3
mit if (exec($test)) {
...
}

... gehts nicht.

Mit

PHP Source code

1
2
3
4
5
$shell exec($test);

if ($shell) {
...
}


gehts auch nicht. ;(
Leben heisst - Narben tragen.

Prometheus

Administrator

Posts: 3,278

  • Send private message

2

Friday, August 3rd 2007, 5:38pm

Also ich wüsste jetzt nicht so 100% sicher wie Du genau die Fehlermeldung sehen kannst die Du nochmal in der Shell bekommst aber es gibt ne Möglichkeit zumindest mal nen Errorcode zu bekommen.

PHP Source code

1
2
exec ($testescapeshellcmd($test), $ergebnis);
echo $ergebnis;


Da wirst Du irgend eine Zahl sehen. Sollte die Zahl 0 sein so kannst Du dir fast 100% sicher sein wurde das Kommando garnicht verarbeitet. Soweit ich das jetzt weiß ist 1 sehr gut und heißt genau das was funktionieren sollte hat auch funktioniert. Wie das allerdings dann genau aussieht bzw. welcher Fehlercode was besagt kann ich nicht sagen. Ich glaube das hängt auch mit der Distribution zusammen.

EDIT:
Mir ist grade noch was eingefallen.

PHP Source code

1
2
3
$return exec($test);
if(!$return) echo "Fehler";
else echo "Kein Fehler";


Das wäre in der Sache vollständig falsch. Der Rückgabewert von exec ist ein String und sollte normal genau die Meldung enthalten die Du in der Konsole sehen würdest. Das heißt wenn Du in der Konsole keine Rückmeldung bekommst und einfach wieder im Kommandoprompt stehst dann wär der Rückgabewert von exec NULL oder False und das obwohl deine Funktion die ausgeführt wurde exakt funktioniert hat! Deshalb etwas umdenken das kann gut sein das es geklappt hat und Du einfach nur falsch ausgewertet hast so gesehen.
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

ShaoKhan

www.Spiegelwelt.com

  • "ShaoKhan" started this thread

Posts: 393

Location: 127.0.0.1

Occupation: EDV Dienstleister

  • Send private message

3

Monday, August 6th 2007, 10:18am

Danke Prom. Also oberes ging bestens, dadurch das es nur null oder eins zurückgibt.
Letzteres gibt mir in beiderlei Fällen 'nen Fehler wieder.
Funzt. Danke.
Leben heisst - Narben tragen.

bauser

Intermediate

Posts: 384

Occupation: Senior Software Engineer

  • Send private message

4

Monday, August 6th 2007, 12:39pm

du kannst bei exec n array angeben, in das die die komplette ausgabe auf der konsole geschrieben wird. du könntest also zum beispiel n kleines echo in dein shellscript basteln, was dir sagt "alles ok!" oder so, und dann das array mit den ausgegebenen zeilen prüfen.

so hab ich schon öfters daten aus externen programmen übertragen
I'm Tony Menthanar! You fuck wit me, you fuckin' wit da best!

This post has been edited 1 times, last edit by "bauser" (Aug 6th 2007, 12:39pm)


ShaoKhan

www.Spiegelwelt.com

  • "ShaoKhan" started this thread

Posts: 393

Location: 127.0.0.1

Occupation: EDV Dienstleister

  • Send private message

5

Wednesday, August 8th 2007, 3:41pm

Danke bauser, bisher funzt alles prima mit Prom's Idee.
Was ich zusätzlich bräuchte:

In der Shell wird 'n Film per ffmpeg gewandelt und dort steht 'ne Prozentzahl, also wie weit er ist in Prozent.
Kann ich das irgendwie 'nem Clientrechner zur Verfügung stellen (nicht die Konsole), das es dort auch angezeigt wird. Am liebsten ja grafisch, aber das wird wohl schwierig.
Leben heisst - Narben tragen.

Prometheus

Administrator

Posts: 3,278

  • Send private message

6

Wednesday, August 8th 2007, 8:00pm

Ob es grafisch oder als Zahlenwert angezeigt wird macht keinen Unterschied da das Problem daran ehr bei den Rückgabewerten zu suchen ist. Ich glaube nicht das Du bei einem Exec Befehl einen dauerhaften Rückgabewert bekommst der sich im Sekundentakt aktualisiert. Aber genau das müsstest Du ja quasie haben. Vor allem müsstest Du die Ausgabe jedes mal verändern also sprich wenn Du 5% ausgegeben hast ein automatisches Refresh wenn dann 6% erreicht sind. Sofern es möglich ist die Rückgabewerte zu bekommen würde ich das ganze mit Ajax versucht auszugeben.

Die Frage ist ob sich der Aufwand dafür wirklich lohnt. Ansonsten hätte ich fast gesagt schreib Dir eine Java Anwendung die das ganze macht und erstelle Dir eine Ausgabemaske als Applet oder mit ASP damit Du das richtig professionell lösen kannst.
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

wcf.user.socialbookmarks.titel