R
RBCS
Hello
Why is in this script the runas not running twice,
once for $tasks and once for $tasksa?
I have active state Perl v5.8.7 build 815!
Roman
#!/usr/bin/perl
#############################################################################
## Name: samples/controls/controls.pl
## Purpose: Controls wxPerl sample
## Author: Mattia Barbon
## Modified by:
## Created: 29/10/2000
## RCS-ID: $Id: controls.pl,v 1.12 2004/10/19 20:28:13 mbarbon Exp $
## Copyright: (c) 2000, 2003 Mattia Barbon
## Licence: This program is free software; you can redistribute it and/or
## modify it under the same terms as Perl itself
##############################################################################
#
my $Domain = "GLION";
my $User = "banz";
my $Password = "soulman1291";
my (@tasks);
my $taski=0;
$tasks[$taski] = ( "notepad" );
$taski++;
$tasks[$taski] = ( "msiexec" );
$taski++;
$tasks[$taski] = ( "notepad" );
my $ResultofRunas = RunAs->logininfo($Domain, $User, $Password, @tasks);
my (@tasksa);
my $taskia=0;
$tasksa[$taskia] = ( "notepad" );
$taskia++;
$tasksa[$taskia] = ( "msiexec" );
$taskia++;
$tasksa[$taskia] = ( "notepad" );
$ResultofRunas = RunAs->logininfo($Domain, $User, $Password, @tasksa);
print "Result of Runas: $ResultofRunas";
package RunAs;
use Win32::AdminMisc;
use POE qw(Wheel::Run Filter::Reference);
sub logininfo{
my( undef, $Domain, $User, $Password, @Process ) = @_;
sub MAX_CONCURRENT_TASKS () { 3 }
my $Result = Win32::AdminMisc::LogonAsUser( $Domain,
$User,
$Password,
LOGON32_LOGON_INTERACTIVE );
if( $Result )
{
my $LogonUser = Win32::AdminMisc::GetLogonName();
print "Successfuly started process as $LogonUser.\n";
$Result = POE::Session->create
( inline_states =>
{ _start => \&start_tasks,
next_task => \&start_tasks,
task_result => \&handle_task_result,
task_done => \&handle_task_done,
task_debug => \&handle_task_debug,
}
);
if( $Result )
{
print "Successfuly executed!\n";
}
else
{
my $err= Error();
print"$err\n";
}
}
else
{
my $err = Error();
print"$err\n";
}
$poe_kernel->run();
my $logofresult = Win32::AdminMisc::LogoffAsUser();
print "Logging off...\n";
sub Error {
return( Win32::FormatMessage( Win32::AdminMisc::GetError() ) );
}
sub start_tasks {
my $heap = $_[HEAP];
while ( keys( %{ $heap->{task} } ) < MAX_CONCURRENT_TASKS ) {
my $next_task = shift @Process;
last unless defined $next_task;
print "Starting task for $next_task...\n";
my $task = POE::Wheel::Run->new
( Program => ["$next_task", , ],
StdoutFilter => POE::Filter::Reference->new(),
StdoutEvent => "task_result",
StderrEvent => "task_debug",
CloseEvent => "task_done",
);
$heap->{task}->{ $task->ID } = $task;
}
}
sub handle_task_result {
my $result = $_[ARG0];
print "Result for $result->{task}: $result->{status}\n";
}
sub handle_task_debug {
my $result = $_[ARG0];
print "Debug: $result\n";
}
sub handle_task_done {
my ( $kernel, $heap, $task_id ) = @_[ KERNEL, HEAP, ARG0 ];
delete $heap->{task}->{$task_id};
$kernel->yield("next_task");
}
}
Why is in this script the runas not running twice,
once for $tasks and once for $tasksa?
I have active state Perl v5.8.7 build 815!
Roman
#!/usr/bin/perl
#############################################################################
## Name: samples/controls/controls.pl
## Purpose: Controls wxPerl sample
## Author: Mattia Barbon
## Modified by:
## Created: 29/10/2000
## RCS-ID: $Id: controls.pl,v 1.12 2004/10/19 20:28:13 mbarbon Exp $
## Copyright: (c) 2000, 2003 Mattia Barbon
## Licence: This program is free software; you can redistribute it and/or
## modify it under the same terms as Perl itself
##############################################################################
#
my $Domain = "GLION";
my $User = "banz";
my $Password = "soulman1291";
my (@tasks);
my $taski=0;
$tasks[$taski] = ( "notepad" );
$taski++;
$tasks[$taski] = ( "msiexec" );
$taski++;
$tasks[$taski] = ( "notepad" );
my $ResultofRunas = RunAs->logininfo($Domain, $User, $Password, @tasks);
my (@tasksa);
my $taskia=0;
$tasksa[$taskia] = ( "notepad" );
$taskia++;
$tasksa[$taskia] = ( "msiexec" );
$taskia++;
$tasksa[$taskia] = ( "notepad" );
$ResultofRunas = RunAs->logininfo($Domain, $User, $Password, @tasksa);
print "Result of Runas: $ResultofRunas";
package RunAs;
use Win32::AdminMisc;
use POE qw(Wheel::Run Filter::Reference);
sub logininfo{
my( undef, $Domain, $User, $Password, @Process ) = @_;
sub MAX_CONCURRENT_TASKS () { 3 }
my $Result = Win32::AdminMisc::LogonAsUser( $Domain,
$User,
$Password,
LOGON32_LOGON_INTERACTIVE );
if( $Result )
{
my $LogonUser = Win32::AdminMisc::GetLogonName();
print "Successfuly started process as $LogonUser.\n";
$Result = POE::Session->create
( inline_states =>
{ _start => \&start_tasks,
next_task => \&start_tasks,
task_result => \&handle_task_result,
task_done => \&handle_task_done,
task_debug => \&handle_task_debug,
}
);
if( $Result )
{
print "Successfuly executed!\n";
}
else
{
my $err= Error();
print"$err\n";
}
}
else
{
my $err = Error();
print"$err\n";
}
$poe_kernel->run();
my $logofresult = Win32::AdminMisc::LogoffAsUser();
print "Logging off...\n";
sub Error {
return( Win32::FormatMessage( Win32::AdminMisc::GetError() ) );
}
sub start_tasks {
my $heap = $_[HEAP];
while ( keys( %{ $heap->{task} } ) < MAX_CONCURRENT_TASKS ) {
my $next_task = shift @Process;
last unless defined $next_task;
print "Starting task for $next_task...\n";
my $task = POE::Wheel::Run->new
( Program => ["$next_task", , ],
StdoutFilter => POE::Filter::Reference->new(),
StdoutEvent => "task_result",
StderrEvent => "task_debug",
CloseEvent => "task_done",
);
$heap->{task}->{ $task->ID } = $task;
}
}
sub handle_task_result {
my $result = $_[ARG0];
print "Result for $result->{task}: $result->{status}\n";
}
sub handle_task_debug {
my $result = $_[ARG0];
print "Debug: $result\n";
}
sub handle_task_done {
my ( $kernel, $heap, $task_id ) = @_[ KERNEL, HEAP, ARG0 ];
delete $heap->{task}->{$task_id};
$kernel->yield("next_task");
}
}