#!c:\perl\bin\perl.exe use strict; use Net::SSH::W32Perl; die "Error: Module Spreadsheet::WriteExcel needed. Please install and retry.\n" unless ( require Spreadsheet::WriteExcel ); my $user = 'username'; my $password = 'password'; my $postfix = 'host.com'; my $cmd = 'lsallq'; my $excelfile = 'lsallq.xls'; die "Error: File $excelfile already exists. Please rename or delete and rerun\n" if ( -e $excelfile ); # WriteExcel can't change an existing my @servers = ( 'servername1', 'servername2', 'servername3', 'servername4', 'servername5', 'servername6', 'servername7', 'servername8', 'servername9', 'servername10', 'servername11', 'servername12', 'servername13', 'servername14', 'servername15', 'servername16', 'servername17', 'servername18', 'servername19', 'servername20', 'servername21', 'servername22', 'servername24', 'servername25', ); my $workbook; die "Error: Could not create $excelfile.\n" unless ( $workbook = Spreadsheet::WriteExcel->new($excelfile) ); my $time = localtime(time()); my $worksheet = $workbook->add_worksheet("lsallq"); my $colnum = 0; foreach my $server (@servers) { my $rownum = 0; print "Connecting to $server\n"; my $ssh = Net::SSH::W32Perl->new($server.'.'.$postfix, port => 22 ); $ssh->login($user, $password); my($stdout, $stderr, $exit) = $ssh->cmd($cmd); if ($stderr) { print "ERROR: $stderr $exit\n"; } $worksheet->write_string($rownum,$colnum, $server); my @printers = split(/\n/,$stdout); sort @printers; print "Generating spreadsheet entries\n"; foreach my $printer (@printers) { $rownum++; $worksheet->write_string($rownum,$colnum, $printer); } $colnum++; $ssh->cmd('exit'); # explicit exit? Trying to fix die at 18th server, how do you destroy instance correctly? } print "Done. I think\n";