Handle zum Remote Process - Rückgabewert erhalten

Handle zum Remote Process - Rückgabewert erhalten

am 22.05.2007 11:33:00 von ronny.kluge

Hallo zusammen,

ich möchte auf einem entfernten Windows-System ein Programm ausführen
lassen, warten bis es sich selbst beendet und anschließend den
Rückgabewert des Programms erhalten.

Ich habs bisher z.B. über Win32::OLE, Win32::Process , open etc.
nicht hinbekommen. Einen Remote-Prozess zu starten ist nicht das
Problem, jedoch die Verbindung bzw. das Handle zu erstellen.

Gruß, Ronny.

Re: Handle zum Remote Process - Rückgabewert erhalten

am 22.05.2007 12:49:47 von Frank Seitz

ronny.kluge@barmenia.de wrote:

> Ich habs bisher z.B. über Win32::OLE, Win32::Process , open etc.
> nicht hinbekommen. Einen Remote-Prozess zu starten ist nicht das
> Problem, jedoch die Verbindung bzw. das Handle zu erstellen.

Ich würde (unter Unix) ssh nehmen, das gibt es auch für Windows.
Ansonsten solltest Du vielleicht näher beschreiben, was
Du genau angestellt hast, dann kann Dir ein Windows-Kenner
vielleicht weiter helfen.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: Handle zum Remote Process - Rückgabewert erhalten

am 22.05.2007 13:33:14 von ronny.kluge

Hier mein bisheriges Test-Beispiel - Es ist ein Versuch ein Object von
Win32::Ole Win32_process an Win32::Process::Create zu übergeben.
Bisher konnte ich
per Win32::OLE einen remote Prozess erstellen. Jedoch bietet das Modul
mir keine Wait Methode, im Gegensatz zum Win32::Process ..... mit dem
kann man widerum keinen remote process erstellen ....


use Win32::OLE qw( in );
use Win32::OLE::Variant;
use Win32::Process;

$Machine =3D "REMOTE win client";
$CommandLine =3D "C:\\public\\test.cmd";

$CLASS =3D "WinMgmts:{impersonationLevel=3Dimpersonate}!//$Machine";


$WMI =3D Win32::OLE->GetObject( $CLASS ) or die "Unable to connect to \\
\\$Machine :" . Win32::OLE->LastError();

$Process =3D $WMI->Get("Win32_Process" ) or die "Unable to get a
Win32_Process :" . Win32::OLE->LastError();


Win32::Process::Create($Process,$CommandLine,"C:\\public\\te st.cmd",
0,NORMAL_PRIORITY_CLASS,".") or print "can not craete process $!\n";

$Process->Wait(INFINITE);
$Process->GetExitCode($code) or die "can not get exitcode";

print "CODE: $code\n";
___________________________________

Im test.cmd File findet einfach nur ein dir + sleep 5 + exit 3 statt !
Als rückgabewert vom entfernten System erwarte ich daher ne 3 !

Das ganze funktioniert super, jedoch wird es leider nur LOKAL
ausgeführt.


Gruß, Ronny.


____________________________________________________________ _______________=
_____________________________________

22 Mai, 12:49, Frank Seitz wrote:
> ronny.kl...@barmenia.de wrote:
> > Ich habs bisher z.B. über Win32::OLE, Win32::Process , open etc.
> > nicht hinbekommen. Einen Remote-Prozess zu starten ist nicht das
> > Problem, jedoch die Verbindung bzw. das Handle zu erstellen.
>
> Ich würde (unter Unix) ssh nehmen, das gibt es auch für Windows.
> Ansonsten solltest Du vielleicht näher beschreiben, was
> Du genau angestellt hast, dann kann Dir ein Windows-Kenner
> vielleicht weiter helfen.
>
> Grüße
> Frank
> --
> Dipl.-Inform. Frank Seitz;http://www.fseitz.de/
> Anwendungen für Ihr Internet und Intranet
> Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel