PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++: Auf entferntem Rechner Anwendung starten



BenNavis
09-12-2005, 08:33
Hallo,

ich habe mich etwas in die Socket Programmierung eingefummelt und habe z.B. einen einfachen HTTP Server/client geschrieben.
Mich würde interessieren, ob es ebenfalls möglich wäre, sowas zu schreiben, um das starten von Anwendungen auf dem entfernten Rechner zu ermöglichen.
Der Server lauscht auf einem bestimmten Port. Der Client kann dann connecten und einen Befehl absetzen, den der Server dann ausführt.

Kann mir da jemand einen Tipp geben?

Danke,
Ben

(Nein, es soll kein Trojaner werden! ;))

RHBaum
09-12-2005, 08:53
Unter Linux/Unix hasst glueck :-)

Unter linux kannst server prinzipiell als daemon schreiben (starten beim initi script mit, und lauschen am port)
oder :
Du gibts der sache nen eintrag in der /etc/services und dem Init (/etc/init.d) (Internet Superdaemon, muss aber installiert sein, gibts als normalen Init, oder als erweiterter, XInit). Der iss in der lage, bei anfragen auf nen bestimmten Port ein programm deiner Wahl zu starten welches dann die verbindung uebernimmt.

Unter windows wuesst ich momentan nix, da sollt man alles was lauscht als service starten ... dazu gibts aber auch wrapper die dir ausm normalen programm nen service machen ....

Alternativ gibts die moeglichkeiten ueber DCOM (wuerg) wenn alle DCOM Protokolle freigeschalten sind, auf nem anderem rechner ein ActiveX server zu starten .... aber ich hoffe das es nicht das ist,was Du willst ^^

Ciao ...

klewan
09-12-2005, 11:45
bitte inetd mit init nicht verwechseln ;-) *fG*

BenNavis
09-12-2005, 13:12
inetd war gemeint, ist klar. ;)

Ich glaube ich habe mich da doch etwas übernommen, ich dachte es wäre ganz einfach möglich, den Client einen exec("/bin/foo") an den Server zu senden zu lassen, der das dann ausführt.

RHBaum
09-12-2005, 14:15
Ups verschrieben, sorry ^^

Ciao ...

Joghurt
09-12-2005, 21:07
Warum nicht einfach SSH?


$ ssh user@remote "ls"Als Ausgabe bekommst du die Ausgabe von ls auf dem Remoterechner

quinte17
10-12-2005, 08:33
ich vermute, dass es sich hier um ein lernendes beispiel handelt, und nicht unbedingt ein sicheres funktionales wie ssh.

von der vorgehensweise her:
es kommt drauf an inwieweit du unter die haube gehen willst...
hast du einen blocking oder nonblicking-server?

du könntest eine art scriptsprache für den server entwickeln, damit er dann interpretieren kann was er macht, oder du gibst ihm eine funktion mit der er gewisse perl/php files enpfangen kann und diese dann mit hilfe des interpreters ausführen lässt.

vielleicht geht es sogar, dass du in dem übergeben datenstream einfach die adresse der aufzurufenden funktion übergibst (funktionspointer), bei einem identischen system, sollte dort auch die selbe funktion ausgeführt werden, dann könntest du wirklich alle befehle ausführen, ohne einen anderen interpreter zu benötigen.

ein anfang wärezum beispiel, dass du eine einfache syntax verwendest ala:
wenn das erste übergebene byte eine '1' ist, dann spiele einen normalen echoserver, wenns eine '2' ist, dann verändere den string nach einem bestimmten musster.

vielleicht helfen dir die anregungen ja weiter :D

greetz

mabus
18-12-2005, 12:21
Also wenn ich das richtig verstanden habe, willst du über ein Clienten ein Kommando an deinem Server schicken (den du selber geschrieben hast) und der Server soll das Programm ausführen?

In dem Fall sollte es einfach reichen, wenn du an dem Server das Kommando übermittelst und von dort aus einfach über die exec-Familie das Programm startest.