itallrounder
Goto Top

.bat Datei über webseite starten mittels PHP

Hallo,

wie im Titel beschrieben, möchte ich gerne eine .bat Datei über einen Link auf einer Website starten.

Die .bat soll einen Terraria-Game-Server starten bzw. auch eine Datei um ihn zu stoppen.

Ich habe bereits gegooglet aber leider bin ich nach langer Sucherei auf keine paasende Lösung gestoßen.

Ich hoffe ihr könnt mir helfen!

Server: Windows Server 2008R2 Std. mit IIS 7.5

Content-Key: 219928

Url: https://administrator.de/contentid/219928

Printed on: April 19, 2024 at 04:04 o'clock

Member: colinardo
colinardo Oct 21, 2013 updated at 08:37:11 (UTC)
Goto Top
Hallo m.reeger,
das kann z.B. die PHP-Funktion exec() kann dies für dich bewerkstelligen. (Beispiele finden sich weiter unten auf der Seite.)
back-to-topBeispiel (ohne jegliche Sicherheitsvorkehrungen):
<?php
   exec('cmd.exe /c "C:\start_gameserver.cmd"');  
?>
Auf deiner HTML-Seite baust du dann einen Link zu deiner PHP-Seite ein, welches dann deine Batch-Datei ausführt.
Du solltest aber auf jeden Fall sicherstellen das du das Script bzw. die Seite entsprechend im Zugriff beschränkst, so dass nicht jeder deinen Game-Server aus und einschalten kann ...

Grüße Uwe
Member: ITAllrounder
ITAllrounder Oct 21, 2013 at 08:36:27 (UTC)
Goto Top
OK vielen Dank ;)

Die Seite wird natürlich gesichert (Benutzerabfrage)

Jetzt wollte ich noch einen Schritt weiter gehen.

Der Webserver ist virtualisiert mit Srv 2012 als OS und IIS 8.
Der/Die Gameserver laufen auf unterschiedlichen Systemen (Host-Server, v-Server etc.)

Lässt sich das dann auch mit exec machen?

Also z.B dass ich auf dem Webserver Netzlaufwerke zu den Gameservern hinzufüge und somit dann z.B auf die .bat zugreife.

also
<?php
exec('cmd.exe /c "X:\gameserver1\start.bat"');
exec('cmd.exe /c "Z:\gameserver1\start.bat"');
exec('cmd.exe /c "P:\gameserver1\start.bat"');
Member: colinardo
colinardo Oct 21, 2013 updated at 08:48:06 (UTC)
Goto Top
Zitat von @ITAllrounder:
Also z.B dass ich auf dem Webserver Netzlaufwerke zu den Gameservern hinzufüge und somit dann z.B auf die .bat zugreife. also
<?php
exec('cmd.exe /c "X:\gameserver1\start.bat"');
exec('cmd.exe /c "Z:\gameserver1\start.bat"');
exec('cmd.exe /c "P:\gameserver1\start.bat"');
Nein, die net start / net stop Befehle für die Dienste würden dann ja lokal auf dem Web-Server ausgeführt. Eine Möglichkeit wäre die Batch-Datei via PSEXEC Befehl auf den Gameservern auszuführen.
Ungetestet etwa so
exec('c:\\WINDOWS\\system32\\psexec.exe \\SERVER-IP -u myuser -p mypassword -accepteula cmd.exe /c "c:\start.bat"');  
Grüße Uwe
Member: infowars
infowars Oct 21, 2013 at 08:54:08 (UTC)
Goto Top
Da gabs schon mal so einen Thread:
.bat via PHP auf Webserver starten
Member: ITAllrounder
ITAllrounder Oct 22, 2013 at 07:45:50 (UTC)
Goto Top
So ich habe das ganze mal getestet aber mein Browser bleibt leider weiß und die .bat öffnet sich nicht.

PHP Version: 5.2.1.x
Webserver: IIS 8

Fileserver: Server 2008R2

So sieht meine Start.php aus:

<?php
exec('c:\\WINDOWS\\system32\\psexec.exe \\192.168.115.53 -u ad-benutzer -p gurkenslat -accepteula cmd.exe /c "D:\gameserver\Start.bat"');
?>

Was mache ich falsch?
Bzw. welche Angaben benötigt ihr noch?
Member: infowars
infowars Oct 22, 2013 at 08:33:21 (UTC)
Goto Top
Wie du an dem anderen Thread sehen kannst, ist dieser auch noch nicht gelöst.
Ich vermute ein Windows-Sicherheits-Feature, dass das starten der Anwendung verhindert.
Probier doch mal das ganze unter Linux, wenn es keinen zwingenden Grund gibt, Windows zu benutzen.
Member: colinardo
colinardo Oct 22, 2013 at 08:40:04 (UTC)
Goto Top
Zitat von @ITAllrounder:
So ich habe das ganze mal getestet aber mein Browser bleibt leider weiß und die .bat öffnet sich nicht.
Das ist doch klar, du gibst in der PHP-Datei ja keinerlei Ausgaben aus ! Da kann also nichts erscheinen ...
Was mache ich falsch?
Versuche zuerst mal die PSEXEC-Zeile manuell auf der Kommandozeile zum laufen zu bringen bevor du es in ein PHP-Script einbaust, wenn dies dann funktioniert sehen wir weiter. Meist liegt es an nicht korrekt eingestellten Berechtigungen, außerdem müssen Port 445 und 139 auf den Remote-Servern freigeschaltet sein damit PSEXEC arbeiten kann.