Works, but could I eliminate the "perl \strawberry\c\bin\":
C:\>perl \strawberry\c\bin\MLnch3.pl -l diebelr -s dynprod,aimprod
Getopt fails:
C:\>MLnch3.pl -l diebelr -s dynprod,aimprod
XX 0 YY 0
Use of uninitialized value $LGN in concatenation (.) or string at C:\s
+trawberry\
c\bin\MLnch3.pl line 43, <DATA> line 101.
Use of uninitialized value $LGN in concatenation (.) or string at C:\s
+trawberry\
c\bin\MLnch3.pl line 47, <DATA> line 101.
Can't find script:
C:\>perl MLnch3.pl -l diebelr -s dynprod,aimprod
Can't open perl script "MLnch3.pl": No such file or directory
@INC & path:
C:\>perl -e "print @INC;"
<code>
C:/strawberry/perl/site/libC:/strawberry/perl/vendor/libC:/strawberry/
+perl/lib.
C:\>path
PATH=C:\winnt\system32;C:\winnt;C:\winnt\system32\WBEM;C:\Program File
+s\Personal
Communications;C:\DST\AWDView\BIN;C:\DST\AWDView\DLL;c:\dst\bin;c:\ds
+t\awdwin\b
in;C:\DST\EnCorr\BIN;c:\dst\bin;C:\Program Files\Support Tools\;C:\Pro
+gram Files
\Sybase\Adaptive Server Anywhere 6.0\win32;C:\DST\ICU;C:\Program Files
+\ATI Techn
ologies\ATI Control Panel;C:\PROGRA~1\CA\SHARED~1\SCANEN~1;C:\Program
+Files\CA\S
haredComponents\ScanEngine;C:\Program Files\Hitec Laboratories\Shared\
+APDFL\Bin;
C:\Notes;C:\Program Files\Utimaco\SafeGuard Easy\;C:\PROGRA~1\IBM\CLIE
+NT~1;C:\PR
OGRA~1\IBM\CLIENT~1\Shared;C:\Program Files\putty;C:\strawberry\c\bin;
+C:\strawbe
rry\perl\site\bin;C:\strawberry\perl\bin;C:\winnt\system32\WindowsPowe
+rShell\v1.
0;C:\DST\BIN
The script minus the DATA section:
#!/usr/bin/perl
#!C:\strawbery\perl\bin\perl.exe
#<MLnch.pl> Run a command or program on a group of Systems
use strict;
use warnings;
use File::Basename;
use Getopt::Long; qw();
my ($SysGroup, $HFILE, $SYS, @libfiles, @finfo, @DataList, @SysLst, @P
+arts, @Systems, @LIST, $LstCnt, $LINE, $truth, $sys, @list, $list, @c
+olumns, $LOGIN, $Sup, $LGN, $GRP, @systems, $GrpCnt, @group, $SysCnt,
+ $grp, @Fields);
GetOptions ("systems=s" => \$SYS , "login=s" => \$LGN , "group=s" => \
+$GRP );
@group = split(/,/, $GRP) if($GRP);
@systems = split(/,/, $SYS) if($SYS);
$GrpCnt=@group;
$SysCnt=@systems;
print "@list XX $GrpCnt YY $SysCnt\n";
@DataList = grep !/^\x23/, <DATA>;
$truth=0;
foreach $LINE (@DataList) {
@Fields=split(/:/, $LINE);
if($GRP) {
foreach $grp (@group) {
if ( "$LINE" =~ /:$grp:/){
$truth++;
}
}
if ( $truth == $GrpCnt ) {
push(@SysLst, $Fields[1]);
}
$truth=0;
} elsif ($SYS) {
foreach $sys (@systems) {
if ( "$LINE" =~ /:$sys:/){
push (@SysLst, $Fields[1]);
}
}
}
}
print "@SysLst\n";
print "$LGN\n";
my $cmd="start kitty.exe";
#my $args=" -l $LGN -agent -i \"C:\Program Files\PuTTY\MyKeys\RsaKey.p
+pk\" -load ";
my $args=" -l $LGN -load ";
sub run_in_bg;
$Sup="i";
foreach my $System (@SysLst) {
print "$System\n";
run_in_bg "$cmd $args $System$Sup";
}
sub run_in_bg {
my $pid = fork;
die "Can't fork a new process" unless defined $pid;
# child gets PID 0
if ($pid == 0) {
exec(@_) || die "Can't exec $_[0]";
}
# in case you wanted to use waitpid on it
#return $pid;
}
__DATA__
a list of systems...
|