While Schleife - befüllen der Variablen in shell exec
Guten Abend.
Ich hoffe, dass ich mein Problem einigermaßen verständlich machen kann.
Ich habe mir eine While schleife angelegt die ein array aus einer mysql Datenbank ausgeben soll. Die Variablen befülle ich direkt nach der Whileschleife:
In co_* stehen immer die gleichen werte drin, dass soll auch so bleiben. Nur in $se_servicename befinden sich mehrere Werte, eben so viele wie es Services gibt. Ausgabe von $se_servicename: DhcpProfSvcgpsvcPlugPlay (4 unterschiedliche Servicenamen)
Dann wird in der Whileschleife die Tabelle ausgeben:
Am ende sind 2 Knöpfe, die die Dienste via $_Post stoppen und starten können. Die Abrage auf $_Post und den auszuführenden Befehl habe ich mir so vorgestellt.
Mein Problem ist jetzt, dass in der Variablen $servicename für jede Zeile immer alle Dienste drin sind und nicht einzeln. Somit starte bzw stoppe ich immer alle Dienste gleichzeitig, sobald ich auf einen Kopf klicke.
Setze ich den letzten code hinter die whileschleife ist nur der letzte Dienst in der Tabelle (PlugPlay) in $se_servicename enthalten.
Wie muss ich den exec-befehl gestalten, damit er die whileschleife richtig aufnimmt? Ich hoffe ihr könnt mir helfen.
Grüße Thorsten
Ich hoffe, dass ich mein Problem einigermaßen verständlich machen kann.
Ich habe mir eine While schleife angelegt die ein array aus einer mysql Datenbank ausgeben soll. Die Variablen befülle ich direkt nach der Whileschleife:
$computer = mysql_fetch_array($computer_query);
while ($service = mysql_fetch_array($service_query)){
$se_servicename=$service['se_servicename'];
$co_ipadress=$computer['co_ipadress'];
$co_user=$computer['co_user'];
$co_password=$computer['co_password'];
In co_* stehen immer die gleichen werte drin, dass soll auch so bleiben. Nur in $se_servicename befinden sich mehrere Werte, eben so viele wie es Services gibt. Ausgabe von $se_servicename: DhcpProfSvcgpsvcPlugPlay (4 unterschiedliche Servicenamen)
Dann wird in der Whileschleife die Tabelle ausgeben:
<tr>
<td>
<?php
$status = shell_exec("psservice \\\\$co_ipadress -u $co_user -p $co_password query $se_servicename -accepteula");
if (preg_match("/RUNNING/i", "$status.")) {
echo "Dienst Gestartet";
} elseif (preg_match("/STOPPED/i", "$status.")) {
echo "Dienst Gestoppt";
} else {
echo "Nicht feststellbar";
}
?>
</td>
<td><?=$service['se_displayname']?></td>
<td><?=$service['se_servicename']?></td>
<td><?=$service['se_description']?></td>
<td> <form method="post" action="detailscomputer.php?co_id=5"> <input type="submit" name="start" value="starten" ></form> </td>
<td> <form method="post" action="detailscomputer.php?co_id=5"> <input type="submit" name="stop" value="stoppen"></form> </td>
</tr>
Am ende sind 2 Knöpfe, die die Dienste via $_Post stoppen und starten können. Die Abrage auf $_Post und den auszuführenden Befehl habe ich mir so vorgestellt.
<?php
if(isset($_POST['start'])){
echo "$se_servicename";
shell_exec("psservice \\\\$co_ipadress -u $co_user -p $co_password start $servicename -accepteula");
}
if(isset($_POST['stop'])){
echo "$se_servicename";
shell_exec("psservice \\\\$co_ipadress -u $co_user -p $co_password stop $servicename -accepteula");
}
?>
Mein Problem ist jetzt, dass in der Variablen $servicename für jede Zeile immer alle Dienste drin sind und nicht einzeln. Somit starte bzw stoppe ich immer alle Dienste gleichzeitig, sobald ich auf einen Kopf klicke.
Setze ich den letzten code hinter die whileschleife ist nur der letzte Dienst in der Tabelle (PlugPlay) in $se_servicename enthalten.
Wie muss ich den exec-befehl gestalten, damit er die whileschleife richtig aufnimmt? Ich hoffe ihr könnt mir helfen.
Grüße Thorsten
Please also mark the comments that contributed to the solution of the article
Content-Key: 207703
Url: https://administrator.de/contentid/207703
Printed on: April 20, 2024 at 10:04 o'clock
2 Comments
Latest comment
Hallo Thorsten,
WAS Starten ?
Du musst deinem Script dann schon sagen welchen der Service er starten soll (immerhin hast du ihm ja per GET-Variable auch schon gesagt, welchen Computer es betrifft):
~Arano
<form method="post" action="detailscomputer.php?co_id=5">
<input type="submit" name="start" value="starten" >
</form>
Du musst deinem Script dann schon sagen welchen der Service er starten soll (immerhin hast du ihm ja per GET-Variable auch schon gesagt, welchen Computer es betrifft):
<form method="post" action="detailscomputer.php?co_id=5">
<input type="hidden" name="svc_name" value="<?=$service['se_servicename']?>" >
<input type="submit" name="start" value="starten" >
</form>
~Arano