Datei per PHP auf anderem Server ausführen

das mit .htaccess is so gemeint das du wenn du einen apache als webserver laufen hast, du eine datei mit dem namen .htaccess erstellst und damit einen passwortschutz realisieren kannst...... da würd ich dir in dem fall einfach mal den :suchen: knopf empfehlen ;-)
 
Wenn du ohne zusätzlichen webserver das machen willst probier es mal mit der funktion ssh2_exec von php. Is en bisschen spät aber egal *g*
 
chibisuke: erklär mir mal wie das bitteschön gehen soll, sobald ich fgetc benutze, liest er unter keinen umständen das aus, was ich auf dem gameserver per echo ausgeben, sondern anscheinend den kompletten dateiinhalt und/oder das erste zechen, was dann natürlich "<" ist, von dem allseits bekannten "<?php"! Falls ich hier was falsch verstehe, bitte klär mich auf, hier mal mein code:

http-server:
Code:
<?php
error_reporting(E_ALL);
$gameserverip=$_POST['ip'];
$fp = fopen("http://$PHP_AUTH_USER:$PHP_AUTH_PW@$gameserverip/Kunden/restart.php?pass=$PHP_AUTH_PW", "r"); 
if (fgetc($fp) == '0') { 
echo "Gameserver startet gerade neu...";
fclose($fp);}
if (fgetc($fp) == '1') {
echo "Auf diesem Server ist kein GameServer vorhanden, der Ihrem Benutzer entspricht, bitte überprüfen sie Ihre Angaben!";
fclose($fp);}
if (fgetc($fp) == '2') {
echo "Es wurde ein serverseitiger Fehler festgestellt, bitte melden sie dies einem Administrator, danke!";
fclose($fp);}
gameServer:
Code:
?php
error_reporting(E_ALL);
$filename = '/var/www/Kunden/php_user';
$somecontent = "$PHP_AUTH_USER";
if (is_writable($filename)) {
   if (!$handle = fopen($filename, "w")) {
         die("2");
         exit;
   }

   if (!fwrite($handle, $somecontent)) {
       die("2");
       exit;
   }
   fclose($handle);
   } else {
   die("2");
   }
system('/var/www/Kunden/servercheck.run', $ausgabe);
if (empty ($ausgabe)) {
die("1");}

if($_GET['pass'] == $PHP_AUTH_PW) {
system('/bin/echo "1" > /var/www/status');
die("0");
} else {die("2");
}
?>
übrigens is $PHP_AUTH_PW auf beiden server der gleiche (mein kleines geheimnis :-) ) und servercheck liest die pids des $PHP_AUTH_USERs aus (dieser ist auch der gleiche wie der gameserver-benutzer, auch mein geheimnis ;-) )
 
Zuletzt bearbeitet:
habs jetz gefunden, der code von chibisuke war unvollständig, es muss lauten:
Code:
while(!feof($dateihandle)) {
$inhalt = fread($dateihandle,1024);}
und dann lässt sich der inhalt der page zeile für zeile auslesen über $inhalt. Bitte chibisuke: wenn du in zukunft code postest, dann guck mal eben kurz ob er auch stimmt, die sache hier hat mich einen geschlagenen tag gekostet, ich ging einfach davon aus, dass das was du gepostet hast so stimmt (!)
 
chibisuke hat gesagt.:
nun also SSH glaub ich nich das du die php datei so einfach ausführen kannst das is schon was kompliziert.... aber über SSL gehts ;-)

fopen() benutzt und einfach die php datei mitsamt voller URL des servers öffnest

fopen("http://www.myserver.de/myphp.php", "r");

zurück bekommst du einen filehandle mit dem du alle daten lesen kannst die myphp.php ausgibt..

und so etwas findet man entweder indem man gleich im php manual nachguckt (http://www.php.net) oder die :suchen: funktion benutzt... ein einmal gründlich :google: ruft
Was bitte hat das was Du hier postest mit SSL zu tun?
Selbst die Verbindung zum Server baust Du lediglich mit HTTP und nicht mit HTTPS auf, daher ohne SSL/TLS.
Weiterhin kann ein fopen() zu einem anderen Server mittels allow_url_fopen in der php.ini deaktiviert werden.
Und wo ist das Problem mit SSH etwas auszufuehren?
Dafuer gibt es doch ssh2_exec().
Die SSH2-Unterstuetzung muss halt in PHP aktiv sein, aber dann ist es kein Problem mehr.

Nur mal so nebenbei...
 
Also wenn du Zugriff auf beide Server hast, dann hau des Webinterface auf den Spiel Server den du dann per include(); einbindest. Müsste auf gehen oder per Iframe.

Warum so kompliziert, so gehts doch viel einfacher.

Dann benutzt du "shell_exec" oder "exec".
 
Zuletzt bearbeitet:
also man sollte schon alles durchlesen,bevor man postet, denn
1) hatte das alles hier NIE etwas mit ssh zu tun, es ging um fopen und fread per HTTP, irgendwer hat map gepostet, dass ssh auch ne alternative wär (sinnlos, system() macht genau das gleiche, allso unnötige aktion)

2) kann auch http sicher sein, was sich von https nicht behaupten lässt, es gibt bereits viele cracks für ssl, ganz im gegensatz zu HTAccess, was eigentlicvh fast nicht zu knacken ist, und genau das benutze ich, so wie chibisuke es auch empfohlen hat. Will mal sehen, wie irgendein möchtegern-"H4xx0r" MD5 entschlüsselt :-). Wenn er es innerhalb von 1 Jahr schafft, isser wirklich gut, denn MD5 is ne Sackgasse, lässt sich fast überhaupt nicht decrypten, auch wenn man das Passwort selbst erstellt hat
 
system() und exec() kann aber durch den SafeMode schnell mal ein Bein gestellt bekommen.
Das passiert Dir nicht wenn Du SSH nutzt.

Selbst wenn Du .htaccess nutzt wird das Passwort bei einer unverschluesselten Verbindung im Klartext uebertragen, ist somit leicht abhoerbar.
Natuerlich kann eine SSL-Verbindung decodiert werden, jedoch ist das bei einem 1024-Bit-Schluessel entsprechend zeitaufwaendig und somit wesentlich sicherer als eine Klartextuebertragung.
Das beste waere wohl .htaccess in Verbindung mit SSL/TLS zu nutzen.
Aber die Aussage, dass HTTP sicherer als HTTPS ist find ich amuesant. ;)

Weiterhin, wie erwaehnt, kann auch fopen() mittels HTTP ganz einfach durch Einstellungen in der php.ini unmoeglich gemacht werden.

Und zu guter Letzt moechte ich Dich noch darauf hinweisen Dich an Gross- und Kleinschreibung zu halten.
 
reptiler hat gesagt.:
1) Selbst wenn Du .htaccess nutzt wird das Passwort bei einer unverschluesselten Verbindung im Klartext uebertragen,
2) Aber die Aussage, dass HTTP sicherer als HTTPS ist find ich amuesant. ;)
3) Und zu guter Letzt moechte ich Dich noch darauf hinweisen Dich an Gross- und Kleinschreibung zu halten.
1) ok, dat wusste ich nich, dachte das wird auch in md5 übertragen
2) jo, kann es durchaus....man muss nur wissen WIE, und genau solche sachen darf man dann bei der armee lernen, falls man in die richtigen einheiten geworfen wird ;)
3) WIeso iCh scHrEib dOcH gAnz noRmaL, oDeR? :-)
 
Zurück