| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

09-12-2009, 18:35
|
|
Restless
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 36
|
|
script schreiben und starten
Hallo leute,
ich bins mal wieder ^^ mit einer meiner fragen xD
es geht darum, das ich immo an nem kleinem Webinterface bastle und ich die möglichkeit suche ein Startscript beim klick auf einem (Start) Button mit Daten aus der mysqltabelle erstellen zu lassen (im ordner desjenigen, der sich im webinterface angemeldet hat [per mysql ist der Ort / Ordner definiert]) und dann soll das ganze auch noch ausgeführt werden .... (liegt alles auf ein und dem selben server und [wo einige wieder mekkern werden ^^] sicherheitsmäßig ist erstmal irrelevant)
kann mir da ggf jm. helfen?
|

09-12-2009, 18:51
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Wie sieht dein Ansatz aus? Wo klemmt es konkret?
|

09-12-2009, 19:33
|
|
Restless
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 36
|
|
wenn man ansatz sagen kann ^^
(ist von mir selber, deshalb also eben anfängerlike ^^)
Code:
<?php
include ("auth.php");
include ("header.php");
include ("inc.php");
$port = $_SESSION["user_Port"];
$ip = $_SESSION["user_Serverip"];
$players = $_SESSION["user_Slots"];
$user = $_SESSION["user_nickname"];
$game = $_SESSION["user_Gamekurz"];
$pfadscript = "/home/$user/$game/";
$scriptname = "start.sh";
$script_path = "$pfadscript$scriptname";
$script = hier muss i-wie das drinne stehen was in die startconfig soll... (z.b. inhalt von der Zeile des users in der Datenbank abschnitt config oder so ^^);
?>
<head>
<meta http-equiv="refresh" content="3; URL=starten.php">
</head>
<?php
$act = $HTTP_GET_VARS['act'];
// Server starten
if ($act=="start")
{
file_put_contents($script_path, $script);
$output = shell_exec("$script_path$scriptname");
}
?>
<table border="0" width="80%">
<tr>
<td width="50%" align="center">
<p>
<?php
if(@fsockopen("$_SESSION[user_Serverip]","$_SESSION[user_Port]",&$errno,&$errstr,2)){
echo "<font color=green><b>Server ist online</font></b>";
}
else{
echo '<a href="starten.php?act=start">Server starten</a>';
}
?>
</td>
</tr>
</table>
das rote ist das problem ^^
|

09-12-2009, 20:05
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Zitat:
|
hier muss i-wie das drinne stehen was in die startconfig soll
|
Wo soll es herkommen? Wie kommst du da ran?
Datenbank, mysql_query() und Co.? Dann los!
Aber mal ganz grundsätzlich:
Was soll das werden?
Du möchtest ein Shellscript erzeugen, als Datei speichern und dann sofort und einmalig ausführen? Was soll denn dieses Shellscript machen, was sich nicht direkt mit PHP erledigen läßt?
Wieso machst du das immer?
Du willst bei jedem Aufruf des PHP-Scripts das Shellscript erzeugen und speichern, es aber nur ausführen, wenn ?act=... übermittelt wurde. Überflüssig!
|

09-12-2009, 20:13
|
|
Restless
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 36
|
|
also ^^
das soll nen startscript sein, es liegt bei dem benutzer im ftp und (muss auch da liegen) und soll numal nicht bearbeitet werden dürfen (es reicht, wenn es jedesmal neu geschrieben wird beim klick auf start)
ja es soll geschrieben werden und dann auch ausgeführt....
nur kp wie ich ihm sage schreibe das aus der mysql datenbank unter config in die datei
|

09-12-2009, 20:15
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Ich wiederhole mich: Was soll denn dieses Shellscript machen, was sich nicht direkt mit PHP erledigen läßt?
Zitat:
Zitat von Restless
ja es soll geschrieben werden und dann auch ausgeführt....
|
Es wird aber unter bestimmten Bedingungen auch geschrieben und NICHT ausgeführt.
Was meinst du mit "das aus der mysql datenbank unter config". Beschreibe dein Problem mal vernünftig!
|

09-12-2009, 20:21
|
|
Restless
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 36
|
|
also ich möchte einfach pro benutzer das feld config haben und da steht dann das drinne, was ins script rein soll ^^
|

09-12-2009, 20:24
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
|

10-12-2009, 16:31
|
|
Restless
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 36
|
|
Tja also das mit dem schreiben funktioniert jetzt zwar aber dafür sind neue Probleme aufgetreten ...
1. wenn er die datei schreibt, dann ist sie komischerweise größer, als wenn ich den code manuell einfüge (ansich nicht das Problem), aber er gibt mir immer einen Fehler aus ... ggf. liegts am closebefehl im php code ... denn wenn ich die datei bearbeite (z.b. leerzeichen rein und dann speichere) dann funktioniert sie.
(Startscript und neuer PHP code sind unten)
2. ich habe jetzt das Startscript in der Datenbank (Feld Config, Type Text) nu schreibt er das ja auch schön rein ^^ aber ich will es eigendlich so haben, dass ich nicht jedem user nen eingenes Script schreiben muss sondern, das er die Variablen mit denen vom user ersetz werden (wie als wenn ich jetzt in php währe $ip mit 127.0.0.1 austauchen [oder was auch immer beim angemeldeten User in der MySQL datenbank im Feld IP steht])
Neuer PHP Code:
Code:
<?php
include ("auth.php");
include ("header.php");
include ("inc.php");
$port = $_SESSION["user_Port"];
$ip = $_SESSION["user_Serverip"];
$players = $_SESSION["user_Slots"];
$user = $_SESSION["user_nickname"];
$game = $_SESSION["user_Gamekurz"];
$pfadscript = "/home/$user/123/";
$scriptname = "start.sh";
$script_path = ("$pfadscript$scriptname");
$dbverbindung = mysql_connect (localhost, name, pw);
$dbanfrage = "SELECT * from games where Game='123'";
$result = mysql_db_query (db, $dbanfrage, $dbverbindung);
while ($ausgabe = mysql_fetch_array ($result))
$dateiconfausgabe = $ausgabe[Config];
?>
<head>
<meta http-equiv="refresh" content="3; URL=starten.php">
</head>
<?php
$act = $HTTP_GET_VARS['act'];
// Server starten
if ($act=="start")
{
$handle = fopen ("$script_path", "w+");
fwrite($handle,$dateiconfausgabe);
fclose($handle);
$output = shell_exec("$script_path start");
}
?>
<table border="0" width="80%">
<tr>
<td width="50%" align="center">
<p>
<?php
if(@fsockopen("$_SESSION[user_Serverip]","$_SESSION[user_Port]",&$errno,&$errstr,2)){
echo "<font color=green><b>Spiel ist online</font></b>";
}
else{
echo '<a href="starten.php?act=start">Spiel starten</a>';
}
?>
</td>
</tr>
</table>
Startscript:
Code:
#!/bin/sh
DIR=/home/Restless/123
DAEMON=123_start
NAME=spiel1
PARAMS='-port $port +ip $ip +maxplayers $maxplayers +map $map'
case "$1" in
start)
echo "Starting: $NAME"
if [ -e $DIR ];
then
cd $DIR
screen -d -m -S $NAME ./$DAEMON $PARAMS
else echo "No such directory: $DIR!"
fi
;;
stop)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stopping: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
;;
restart)
if [[ `screen -ls |grep $NAME` ]]
then
echo -n "Stopping: $NAME"
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
echo " ... done."
else
echo "Coulnd't find a running $DESC"
fi
echo -n "Starting: $NAME"
cd $DIR
screen -A -m -d -S $NAME ./$DAEMON $PARAMS
echo " ... done."
;;
status)
screen -ls | grep -wq "$NAME" && echo "$NAME is UP" || echo "$NAME is DOWN"
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0
sry wenns ein bissle lang ist ^^
|

10-12-2009, 20:43
|
|
Restless
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 36
|
|
ok (erstmal sry wegen jetzt 2mal posten hintereinander aber ich finde den letzten eintrag schon lang genug ^^)
ich weiß jetzt zumindest schonmal an was es liegt ^^ (bekomme den selben Fehler)
http://www.wcm.at/forum/showthread.p...n-234893.html?
dort ist es erklärt ^^ nur muss ich das noch i-wie mysql / php beibringen xD
UPDATE:
Ok habs hinbekommen ^^ einafch
Code:
apt-get install tofrodos
und dann eben dos2unix start.sh
Jetzt müsste es nur noch möglich sein, das die variablen im startscript automatisch angepasst werden, wenn es aus der datenbank geholt wird und in die Datei geschrieben wird.
Geändert von Restless (10-12-2009 um 21:12 Uhr)
|

11-12-2009, 02:28
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Windows-Zeilenumbrüche funktionieren nicht, es muss Unix-Style sein. Hast du selbst herausgefunden. Also hör doch einfach auf, Windows-Zeilenumbrüche reinzuschreiben!
Wäre jedenfalls sinnvoller, als eine nachträgliche Konvertierung.
Dein eigentliches Problem läßt sich mit str_replace() lösen.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|