Autor | Zpráva | ||
---|---|---|---|
opsidiam Profil |
#1 · Zasláno: 2. 12. 2014, 23:40:51
Dobrý den nikde na internete neviem naist navod na to ako by som mohol dat na web formular tak aby sa cez ten form dal ovladat terminal na ubuntu server 14.04 prosim pomohli by ste mi?
|
||
juriad Profil |
#2 · Zasláno: 2. 12. 2014, 23:56:40
http://php.net/manual/en/function.shell-exec.php
Ale dej si pozor na zabezpečení. Tento skript nesmí být veřejně přístupný. |
||
opsidiam Profil |
#3 · Zasláno: 2. 12. 2014, 23:59:18
:( vôbec tam tomu nechapem :(
|
||
Karel N. Profil * |
#4 · Zasláno: 3. 12. 2014, 00:17:31
Čeho tím chceš docílit? Jakou máš představu použití? To co tady chceš se nedělá z mnoha důvodů, proto nikde nejsou návody. Docílit se toho samozřejmě dá, ale určitě na tvoji potřebu existuje hotové řešení.
|
||
juriad Profil |
#5 · Zasláno: 3. 12. 2014, 00:17:46
Tady máš hromadu funkcí, které umí spouštět externí programy; většinou chtějí jako první argument příkaz, který se má vykonat.
http://php.net/manual/en/ref.exec.php Liší se mezi sebou tím, jak zvládají výstup a jak nakládají s návratovou hodnotou. |
||
opsidiam Profil |
mne nejde o bezpecnost lebo k tomu budem mat prystup len ja ale chcem si omnoho ulahcit robotu zatial som skusil nieco taketo
<form action="server.php" method="post"> <input type="hidden" name="sent" value=""/> <input type="text" name="shell" maxlength="32"/> <input type="submit" name="send" value="Login" class='buttons'/> </form> //server.php <?php $sh=$_POST['shell']; shell_exec('../../../../../'); shell_exec('cd /opt/Server'.$sh); shell_exec('./start'); ?> a webserver sa nachadza takto /var/www/vhosts/default/htdocs a ja sa potrebujem dostat /opr/Server a tu spustit start.sh |
||
juriad Profil |
#7 · Zasláno: 3. 12. 2014, 00:50:18
opsidiam:
shell_exec vykoná jediný příkaz nezávisle na předchozích voláních. shell_exec('cd /opt/Server && ./start.sh'); Prostě si v terminálu přejdi do adresáře /var/www/vhosts/default/htdocs a napiš jediný příkaz, který provede vše co chceš. Pro řetězení příkazů můžeš použít operátory: ; - stredník (nezávislé příkazy) && - and (pokud předchozí byl úspěšný) || - or (pokud předchozí nebyl úspěšný) | - přesměrování výstupu na vstup následujícího |
||
opsidiam Profil |
#8 · Zasláno: 3. 12. 2014, 01:01:30 · Upravil/a: opsidiam
a ked ten server spusti tak bude bezat stale?? lebo ked som to pustal cez terminal tak ked som ho zavrel tak sa server vipol,
PS stale to nejde :( a $sh je cislo ktore zadam, lebo tam nieje len jeden server Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine. toto vipise |
||
Joker Profil |
#9 · Zasláno: 3. 12. 2014, 10:07:24
opsidiam:
Ta hláška znamená, že se nepodařilo rezervovat dost paměti pro virtuální stroj Javy. |
||
Karel N. Profil * |
#10 · Zasláno: 3. 12. 2014, 10:32:22
trochu mi to připadá, že si chceš udělat vlastní ovládací dashboard pro Minecraft, trefil jsem se? Vše co spustíš z php, bude pod procesem php a po jeho ukončení se také ukončí. Běžně se k tomuhle účelu udělají init scripty, které se mohou přes php volat a jejich výstup zpracovat nebo přeposlat do stránky. Mrkni jak je řešení spouštění služeb třeba v
/etc/init.d .
|
||
Fisir Profil |
#11 · Zasláno: 3. 12. 2014, 17:16:12
|
||
opsidiam Profil |
#12 · Zasláno: 3. 12. 2014, 19:42:37
Karel N.:
Presne na to :) ale ked som kukal ten nohup tak som sa rozhodol ze pouzijem ten ale neviem ako to zapisat je tam napisane : nohup ./script.sh & ale neviem ako to zapisat do PHP , chcel by som to zakombinovat do tochto scriptu:
<?php if(isset($_POST['sent'])){ $sh=$_POST['shell']; echo $sh; $output = shell_exec('cd /opt/MC'.$sh.' && ./start.sh 2>&1'); echo $output;} ?> Dakujem |
||
Karel N. Profil * |
#13 · Zasláno: 3. 12. 2014, 23:27:22
a proč nepoužiješ tohle https://github.com/sandain/MinecraftServerControlScript?
nohup a jiné způsoby jak spuštit proces na pozadí není dostatečné. Ty potřebuješ zároveň získat přístup k již běžícímu procesu, abys ho případně restartoval, upravil, stopnul atd. BTW tvůj příkaz by měl vypadat cca takhle shell_exec('cd /opt/MC'.$sh.' && nohup ./start.sh 2>&1');
Přímo v distribuce s minecraftem je řídící init script a návod k němu je v tutoriálech na stránkách minecraftu http://minecraft.gamepedia.com/Tutorials/Server_startup_script. V momentě, kdy se ti tohle povede na serveru zprovoznit, ovládat to z php je lahoda: //start $result = shell_exec("/etc/init.d/minecraft_server start"); //stop $result = shell_exec("/etc/init.d/minecraft_server stop"); //create world on port $result = shell_exec("/etc/init.d/minecraft_server create worldname 22333"); //get status of world $result = shell_exec("/etc/init.d/minecraft_server status worldname"); |
||
Časová prodleva: 9 let
|
0