[CS] Webbased server opstarten

Pagina: 1
Acties:
  • 110 views sinds 30-01-2008
  • Reageer

  • MP83
  • Registratie: Januari 2000
  • Laatst online: 31-01 18:11
Op het werk hier hebben we een CS-servertje draaien die we nu via een shell kunnen opstarten met het volgende screen-commando:

code:
1
screen -S hlcs_grfx ./hlds_run -game cstrike +exec server.cfg +port 27075 +ip ***.**.***.** +maxplayers 12 +map fy_iceworld
Nu willen we de CS-server webbased proberen te starten zodat niet iedereen shell-toegang hoeft te hebben, maar dat we toch allemaal de server kunnen starten :)

Daarvoor probeerde ik met het volgende PHP-scriptje hetzelfde screen-commando als hierboven te starten:
PHP:
1
2
3
4
<?
$start = shell_exec("sudo mikehup /home/grfx/screen");
echo "<pre>Output: $start</pre>";
?>
shell_exec zou alles wat wordt gereturned moeten weergeven via $start. Sudo zorgt ervoor dat het screen-commando onder de juiste gebruiker wordt gestart dacht ik. Mikehup is het commando om een los proces op te starten, zodat het proces niet wordt gekilled zodra je de browser sluit of het php-script stopt.

Zonder sudo krijg ik de melding "Must be connected tot a terminal". ;(

Zonder mikehup start de server en is deze binnen enkele seconden weer gestopt. ;(

Nu was mijn vraag of iemand al eens zoiets webbased heeft gedaan en of het uberhaupt wel mogelijk is. :)

  • CU2morO
  • Registratie: September 2001
  • Laatst online: 31-01 20:32
draait de webserver wel onder root, of iig een access level dat dingen mag opstarten? ik heb niet zo heel veel verstand van WEBservers en php, maar ik gok dat zoiets het kan zijn

  • RePlayer
  • Registratie: September 2003
  • Laatst online: 02-03 19:30
sudo is toch het commando om een andere gebruiker root rechten te geven? Waarom gebruik je dat?

---


  • RePlayer
  • Registratie: September 2003
  • Laatst online: 02-03 19:30
Wil dit niet dan?

<?
shell_exec("screen -S hlcs_grfx ./hlds_run -game cstrike +exec server.cfg +port 27075 +ip ***.**.***.** +maxplayers 12 +map fy_iceworld
");
?>

---


  • RePlayer
  • Registratie: September 2003
  • Laatst online: 02-03 19:30
of probeer eens screen -dmS exec <commando>

---


  • MP83
  • Registratie: Januari 2000
  • Laatst online: 31-01 18:11
CU2morO schreef op 23 September 2003 @ 14:44:
draait de webserver wel onder root, of iig een access level dat dingen mag opstarten? ik heb niet zo heel veel verstand van WEBservers en php, maar ik gok dat zoiets het kan zijn
De webserver draait onder user wwwdata, die de juiste rechten heeft om de server te starten
RePlayer schreef op 23 September 2003 @ 14:52:
sudo is toch het commando om een andere gebruiker root rechten te geven? Waarom gebruik je dat?
Om er zeker van te zijn dat het geen rechten probleem is, zonder sudo krijg ik de foutmelding dat ik niet connected ben met een terminal.
RePlayer schreef op 23 September 2003 @ 14:53:
Wil dit niet dan?

<?
shell_exec("screen -S hlcs_grfx ./hlds_run -game cstrike +exec server.cfg +port 27075 +ip ***.**.***.** +maxplayers 12 +map fy_iceworld
");
?>
Nope, geen output, server niet gestart ;(
RePlayer schreef op 23 September 2003 @ 14:54:
of probeer eens screen -dmS exec <commando>
Zelfde verhaal als boven ;(

  • The Will
  • Registratie: Mei 2001
  • Laatst online: 02:27
RePlayer: Zou je voortaan de edit knop willen gebruiken, in plaats van drie posts onder elkaar? :)

There is no magic.


  • MP83
  • Registratie: Januari 2000
  • Laatst online: 31-01 18:11
The Will, stomme vraag misschien, maar denk je dat het topic wel hier thuis hoort, ondanks dat het een game-gerelateerde vraag is? 8)7

  • Hahn
  • Registratie: Augustus 2001
  • Laatst online: 22:11
Ik heet geen The Will, maar toch reageer ik even :P

Misschien kan je het inderdaad beter in Programming & Webscripting vragen, aangezien je doormiddel van een PHP script een programma (in dit geval een spel) probeert te starten. En ondanks dat je een CS server probeert te starten heeft het niet veel te maken met spellen.

Aangezien ik verder totaal geen script ervaring heb kan ik je niet helpen en doe ik ook maar geen poging tot :)

The devil is in the details.


  • Han
  • Registratie: Juli 2001
  • Niet online

Han

Op verzoek en na intern overleg:

-> Non-Windows Operating Systems

Doubt thou the stars are fire; Doubt that the sun doth move; Doubt truth to be a liar; But never doubt I love.


  • MP83
  • Registratie: Januari 2000
  • Laatst online: 31-01 18:11
:*

  • Freezerator
  • Registratie: Januari 2000
  • Laatst online: 30-04 16:03
screen -S hlcs_grfx ./hlds_run -game cstrike +exec server.cfg +port 27075 +ip ***.**.***.** +maxplayers 12 +map fy_iceworld &

Als je dit als code gebruikt, zal de server ook blijven draaien als je je shell gesloten heb.
Volgens mij wat er nu gebeurt, er word even een shell geopend, de server start, je scriptje is klaar, shell dicht, server plat.

Dus hopelijk doet de & op het einde de trick.

Verwijderd

Wat voor relevante foutmeldingen staan er in de error log van je webserver? Tevens, heb je perse een tty nodig om CS te starten? Kun je niet gewoon het volgende doen:

code:
1
nohup ./hlds_run ...... > /pad/naar/een/logfile 2>&1 &

  • elTigro
  • Registratie: November 2000
  • Laatst online: 20-02 06:15

elTigro

Es un Gringo!

Lukt het niet als je dat "screen -S hlcs_grfx ./hlds_run -game cstrike +exec server.cfg +port 27075 +ip ***.**.***.** +maxplayers 12 +map fy_iceworld " gewoon in een shell scriptje met nohup propt en dat dan vanuit php opstart?

Lazlo's Chinese Relativity Axiom:No matter how great your triumphs or how tragic your defeats --approximately one billion Chinese couldn't care less.


  • Eärendil
  • Registratie: Februari 2002
  • Laatst online: 06:51
Misschien kan je het via een omweg doen:

• Maak een php-pagina die 'aan' of 'uit' in een bepaalde file schrijft
• Maak een cronjob die elke x minuten controleert of de server aan of uit staat en of dat klopt (met 'screen -ls' krijg je een lijst met alle draaiende servers)

  • MP83
  • Registratie: Januari 2000
  • Laatst online: 31-01 18:11
Alle bovenstaande command's starten de server slechts een seconde of twee, of geven de melding 'Must be connected to a terminal' :/

Ik ga het is proberen zoals Eärendil het zegt :)

Bedankt alvast tot zover :>

  • MP83
  • Registratie: Januari 2000
  • Laatst online: 31-01 18:11
Ok, ik heb nu een pagina waar je op kan kiezen voor 'server starten' en 'server stoppen'. Die schrijft een 1 of een 0 weg naar een file.

Een shell-scriptje leest die 1 of de 0 uit en start of stopt de server, wat prima werkt. Nu moet elke 5 seconden dat script worden gerund. Ik heb in crontab het volgende gezet:

code:
1
1 * * * * /pad/naar/script/scriptnaam


Het gekke is nu dat de server nog niet wordt gestopt/gestart na een minuut wachten :?

Iemand enig idee? :)

  • Eärendil
  • Registratie: Februari 2002
  • Laatst online: 06:51
Heb je getest of de crontab werkt? M.a.w., maak eens een job die 'date > /tmp/testfile' doet ofzo

  • RePlayer
  • Registratie: September 2003
  • Laatst online: 02-03 19:30
En verwijst het script wel naar de nodige programma's met absolute paden?

Je kunt het testen door een verwijzing in rc.local te zetten, werkt ie dan wel dan is het script goed.

[ Voor 44% gewijzigd door RePlayer op 30-09-2003 16:28 ]

---


  • Freezerator
  • Registratie: Januari 2000
  • Laatst online: 30-04 16:03
Kan je niet een screen fixen?

Dus dat je dmv screen een sessie start, die gaat door zelfs als je console sluit.

Btw, mijn oplossing zou moeten werken, dat & teken zorgt ervoor dat het gewoon doorgaat de server.
Pagina: 1