PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm auf anderem Rechner starten



Andislack
20-04-2004, 23:01
Hi!

Ich hab ein Problem mit dem starten von Programmen auf einem anderen Rechner...

Ich habe einen Webserver und eine HP.
Auf der HP kann man eine Maschine "steuern" (es gibt nur festgelegte Programme, die man ausführen kann, also keine interaktive steuerung), die aber im internen Netzwerk an einem anderen Rechner angeschlossen ist.
Mein Problem ist jetzt: Wie starte ich das Steuerungsprogramm auf dem Rechner, an dem die Maschine angeschlossen ist?
Ich brauche zusätzlich auch noch den Rückgabewert, den das Steuerungsprogramm rauswirft, auf der HP um den Status der Maschine zu "überwachen".

Die HP ist in PHP gescriptet, gibts da vielleicht ne Möglichkeit das mit php oder perl zu realisieren? Wäre fsockopen() oder so da ein Ansatz?
Auf dem Rechner der Maschine ist kein Webserver installiert, geht auch nicht mehr wegen zu wenig Plattenplatz.

Wäre nett, wenn jemand da ne Idee oder so hätte...

Danke Gruss Andi

bischi
22-04-2004, 12:56
Spontan kommen mir da nur gerade Client-Server-Programme in den Sinn - keine Ahnung, wie du das sonst machen willst...

MfG Bischi

Andislack
27-05-2004, 02:34
Hi!

Hat lange gedauert, aber jetzt...
gibts Probleme :-)

Habe einen PHP "Server" geschrieben und einen Clienten.
Wenn ich den Server starte lauscht auf dem Port 9000 von localhost und gibt eine Begrüßung aus.
Startet man den Cleinten, leist der die Begrüßung, schickt irgendeinen Text und beendet sich und den Server dann.

Ich starte den "Server" auf der Konsole mit php -q server.php (Linux-Rechner)
Dann starte ich den Cleinten unter Windows aus einer DOS Box mit php client.php
So funktioniert alles bestens.

Versuche ich jetzt aber über den Browser auf den "Server" zuzugreifen, bekomme ich immer:
Connection refused....unable to connect[10061] Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.

Das spiel geht in beiden Richtungen so, also wenn ich den "Server" auf dem Linux-Rechner starte oder wenn ich ihn auf dem Win-Rechner starte.

php ist mit --enable-sockets auf beiden Systemen ausgestattet.
Muss ich sonst noch irgendwas einstellen im Apachen oder php, damit das übers Web auch geht?
Selbst wenn ich beides auf localhost laufen lasse geht es nicht übers Web :confused:

Hier mal mein Server und mein Client:

Server:


<?
$host = "localhost";
$port = 9000;

// don't timeout!
set_time_limit(0);

$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create
socket\n");

$result = socket_bind($socket, $host, $port) or die("Could not bind to
socket\n");

// start listening for connections
$result = socket_listen($socket, 3) or die("Could not set up socket
listener\n");
echo "Waiting for connections...\n";

// accept incoming connections
$spawn = socket_accept($socket) or die("Could not accept incoming
connection\n");
echo "Received connection request\n";

// read client input
$input = socket_read($spawn, 1024) or die("Could not read input\n");
echo $input;

$output = "HAllo";
socket_write($spawn, $output, strlen ($output)) or die("Could not write
output\n");
echo "Sent output: $output\n";

socket_close($spawn);
socket_close($socket);
?>

Client:



<?php
$address = gethostbyname ('localhost');
$port = 9000;

$socket = socket_create (AF_INET, SOCK_STREAM, 0);
$connect = socket_connect ($socket, $address, $port);

$out = "Uebertragen\n";
$write = socket_write($socket, $out, strlen($out));
$read = socket_read($socket, 4096);
echo $read;

?>

Andislack
27-05-2004, 20:10
Hi,

es funktioniert jetzt.
Ich musste die IP vom "Server" auf 0 setzen.
Im "Clienten" dann dementsprechend die IP des Rechners, auf dem der "Server" lauscht.
Sonst hat alles gestimmt.

Gruss Andi

Claudine
27-05-2004, 21:04
Original geschrieben von Andislack
Hi,

es funktioniert jetzt.
Ich musste die IP vom "Server" auf 0 setzen.
Im "Clienten" dann dementsprechend die IP des Rechners, auf dem der "Server" lauscht.


Mit SCP hättest Du das auch lösen können, und hättest noch einen verschlüsselten
Tunnel für die Verbindung gratis dazu bekommen.

Andislack
27-05-2004, 21:14
Hi Claudine,

da ich in solcher Richtung noch wenig Erfahrung habe, habe ich ja hier gepostet um Tipps und Ratschläge zu bekommen ;-)
Mein Posting ist nun schon etwas her und ich musste was vorweisen, daher im Moment mit PHP realisiert.

Wäre trotzdem nett, wenn du deine Idee etwas präziser vorstellen könntest...SCP sagt mir im Moment überhaupt nix.
Wäre vielleicht ein Versuch wert!?

Danke Andi

Claudine
27-05-2004, 23:19
Original geschrieben von Andislack

Wäre trotzdem nett, wenn du deine Idee etwas präziser vorstellen könntest...SCP sagt mir im Moment überhaupt nix.
Wäre vielleicht ein Versuch wert!?


der Weg...
- SCP (Secure Copie) einrichten (Client + Server)
- testen + einloggen auf dem fremden Rechner ob alles funktioniert
- Shellscript schreiben, was dein Programm startet auf dem fremden Rechner.

Ist gar nicht so schwer. Deine Lösung ist viel komplexer.

http://linux.about.com/library/cmd/blcmdl1_scp.htm