Hello;

While this script working, in case of not to connect a node ("BADYK01","BAGRK01", "BAHLK01", "BAHLK02", "BAHLK03") , it stops.

I want it to be continue even if it doesnt connect a node. I mean if it couldnt connect to BAGRK01, I want it to be continue and connect the other node BAHLK01.

Thanks

# $interface = "1.0"

# This PerlScript example iterates through an array of three session names
# connecting to each one in turn. The unix 'df' command is 
# sent to each server and the output is captured to a logfile.
TEST1:

# Enable errors
#
use Win32::OLE;
Win32::OLE->Option(Warn => 3);

#unlink <*.txt>;
$crt->Session->Disconnect();
# An array of session names to connect to.

@sessions = ("BADYK01","BAGRK01", "BAHLK01", "BAHLK02", "BAHLK03");

# define some useful constants
#
$true = 1;
$false = 0;
$StartLog = $true;
$StopLog = $false;
$Append = $true;
$Overwrite = $false;
$Raw = $true;
$Not_raw = $false;

# NOTE: Set your logfile path here
#
#$LogFile = "LOG.txt";
#$LogFile = "$LOG.log";

#
$crt->Screen->{'Synchronous'} = $true;

# Loop thru the array of sessions
#
for ($i = 0; $i < 5; $i++) {

    # Connect to each session using the "/s sessionname" argument.
    #
    $crt->Session->Connect("/s " . $sessions[$i]);

    # Wait for 5 seconds, or until the login prompt appears.
    #
    $crt->Screen->WaitForString("MAIN LEVEL COMMAND <___>");

    # Set the name of the logfile for this session.
    #
    $crt->Session->{'LogFileName'} = LOG .  ".txt";

    # Enable logging
    #

    $crt->Session->Log($StartLog,$Append);
    # Send the 'df' command followed by a CR (octal 015)
    #
    $crt->Screen->Send("EOL:;\015");
    $crt->Screen->WaitForString("BASE TRANSCEIVER STATION ALARMS HANDLING COMMAND <EO_>");

    $crt->Session->Log($StopLog);

    $crt->Session->Disconnect();
}

$crt->Screen->{'Synchronous'} = $false;

For one thing the array starts a index 0 (zero) so your looping threw one that doesn't exist. Also you need to use the modules strict and warnings
to catch more problems...

#its really 4
#change the for ($i=0; $i <= 4; $i++){ }

for my $each (@sessions){
    #..change $sessions[$i] to $each ...
    #this will eliminate any other errors
}

#add at the top of the script
use strict;
use warnings;

Edited 4 Years Ago by wickedxter

Or, write the for loop like so:

for my $i(0..$#sessions){
  ...

  ... ( $sessions[$i])

  ...
}

Hello

I added what you said but i couldnt achieve it. Could you pls add me however you want and send me back pls..

Thanks

#
for ($i = 0; $i < 62; $i++) {

    # Connect to each session using the "/s sessionname" argument.
    #
    $crt->Session->Connect("/s " . $sessions[$i]);

    # Wait for 5 seconds, or until the login prompt appears.

where is the rest of the code? what module is $crt hooked to?

Edited 4 Years Ago by wickedxter

This article has been dead for over six months. Start a new discussion instead.