Ik draai op mijn Windows Server 2008 een freeSSHd server, en deze gebruik ik momenteel om via PHP (ssh2 library) mijn game servers te kunnen starten door middel van het uitvoeren van een Batch.
Ik probeer nu mijn script om te bouwen, zodat ik servers kan starten met een aangepaste commandline, in plaats van een voorgeprogrameerde commandline. Het probleem is nu dat ik het niet voor elkaar krijg om via PHP een cmd commando uit te voeren.
Het commando dat ik uit probeer te voeren is als volgt:
Het punt is, als ik dit commando invoer op de server zelf, met command prompt, werkt het prima.
Als ik via PuTTY inlog op mijn SSH, zou het alle commando's uit moeten voeren via de command line.
Het eerste probleem waar ik tegenaan loop is al het feit dat het eerste wat ik zie na het inloggen is dat het pad op "C:\Servers\Deathrun" staat.
Het tweede probleem is dat zodra ik een command uitvoer via PuTTY, het process wel gestart word, maar niet gemaximaliseerd word weergegeven, staat niet in de taskbar en in taakbeheer kan ik hem ook niet naar de voorgrond brengen. De server is echter wel te joinen door spelers, maar ik kan niet bij mij console, en kan dus ook geen commands uitvoeren.
Dan komen we vervolgens bij het PHP script, waar ik met een PHP code een server probeer te herstarten.
De code is als volgt:
Het vreemde is dat het taskkill command netjes uitgevoerd wordt, maar de commandline werkt niet.
Ik heb ook nog geprobeerd om voor het start commando een "cd" commando uit te voeren, om hem terug naar "C:\Users\Admin" te zetten, maar ook bij "cd" krijg ik de melding dat het commando niet kan worden uitgevoerd.
Het lijkt niet te maken te hebben met het uitvoeren van meerdere commando's, want als ik meteen begin met het "start" commando lijkt het ook niet te werken.
Ik weet zeker dat de PHP code klopt, het enige probleem waar ik tegenaan loop is dat het SSH commando niet uitgevoerd wil worden. Ik blijf constant de volgende error krijgen:
Iemand enige ervaring met freeSSHd die mij de gouden tip kan geven?
Ik probeer nu mijn script om te bouwen, zodat ik servers kan starten met een aangepaste commandline, in plaats van een voorgeprogrameerde commandline. Het probleem is nu dat ik het niet voor elkaar krijg om via PHP een cmd commando uit te voeren.
Het commando dat ik uit probeer te voeren is als volgt:
code:
1
| START "" /MAX /REALTIME /AFFINITY 8 "C:\Servers\Deathrun\srcds.exe" -console -game garrysmod -ip 74.63.210.178 -port 27019 -maxplayers 40 +fps_max 600 -disableluarefresh +gamemode deathrun +rcon_password <removed> +exec server3.cfg +map deathrun_marioworld_final |
Het punt is, als ik dit commando invoer op de server zelf, met command prompt, werkt het prima.
code:
1
| C:\Users\Admin>START "" /MAX /REALTIME /AFFINITY 8 "C:\Servers\Deathrun\srcds.exe" -console -game garrysmod -ip 74.63.210.178 -port 27019 -maxplayers 40 +fps_max 600 -disableluarefresh +gamemode deathrun +rcon_password <removed> +exec server3.cfg +map deathrun_marioworld_final |
Als ik via PuTTY inlog op mijn SSH, zou het alle commando's uit moeten voeren via de command line.
Het eerste probleem waar ik tegenaan loop is al het feit dat het eerste wat ik zie na het inloggen is dat het pad op "C:\Servers\Deathrun" staat.
Het tweede probleem is dat zodra ik een command uitvoer via PuTTY, het process wel gestart word, maar niet gemaximaliseerd word weergegeven, staat niet in de taskbar en in taakbeheer kan ik hem ook niet naar de voorgrond brengen. De server is echter wel te joinen door spelers, maar ik kan niet bij mij console, en kan dus ook geen commands uitvoeren.
Dan komen we vervolgens bij het PHP script, waar ik met een PHP code een server probeer te herstarten.
De code is als volgt:
PHP:
1
2
3
4
5
6
7
8
9
10
| if(in_multiarray($_POST['pid'], $servers)) { $ssh->exec_cmd("taskkill /F /PID ".$_POST['pid']); echo $ssh->get_output()."<br />"; $ssh->exec_cmd(str_replace("{STARTING_MAP}", $servers[$_POST['sid']]['startingmap'], $servers[$_POST['sid']]['commandline'])); echo $ssh->get_output(); $message_green = "Server ".$servers[$_POST['sid']]['windowtitle']." restarted successfully!"; }else{ $message_red = "Server ".$servers[$_POST['sid']]['windowtitle']." doesn't appear to be up!"; } $ssh->disconnect(); |
Het vreemde is dat het taskkill command netjes uitgevoerd wordt, maar de commandline werkt niet.
Ik heb ook nog geprobeerd om voor het start commando een "cd" commando uit te voeren, om hem terug naar "C:\Users\Admin" te zetten, maar ook bij "cd" krijg ik de melding dat het commando niet kan worden uitgevoerd.
Het lijkt niet te maken te hebben met het uitvoeren van meerdere commando's, want als ik meteen begin met het "start" commando lijkt het ook niet te werken.
PHP:
1
2
3
4
5
6
7
8
9
| if($servers[$_POST['sid']]['running'] == 0) { $ssh->exec_cmd(str_replace("{STARTING_MAP}", $servers[$_POST['sid']]['startingmap'], $servers[$_POST['sid']]['commandline'])); echo $ssh->get_output()."<br />"; echo str_replace("{STARTING_MAP}", $servers[$_POST['sid']]['startingmap'], $servers[$_POST['sid']]['commandline']); $message_green = "Server ".$servers[$_POST['sid']]['windowtitle']." restarted successfully!"; }else{ $message_red = "Server ".$servers[$_POST['sid']]['windowtitle']." doesn't appear to be up!"; } $ssh->disconnect(); |
Ik weet zeker dat de PHP code klopt, het enige probleem waar ik tegenaan loop is dat het SSH commando niet uitgevoerd wil worden. Ik blijf constant de volgende error krijgen:
code:
1
| Unable to execute command or shell on remote system: Failed to Execute process. |
Iemand enige ervaring met freeSSHd die mij de gouden tip kan geven?