#!/usr/bin/perl -w
#Dipendenze Moduli
use Net::Telnet;
use Net::Ping;
use Term::ReadKey;
#
#ARRAY contenente i nomi dei client da Contattare via Telnet
#
@hosts = ("client1", "client2", "client3", "client4", "client5" );
$comando = "mount -a";
#
#Prelevo il nome del file di LOG
#
print "File output : ";
chomp ($fileOut = <STDIN>);
#
#Carico il nome dell'utente con il quale effettuare la login sui client
#
print "Login Host Remoto : ";
chomp ($login = <STDIN>);
#
#Carico la password dell'utente con il quale effettuare la login sui client
#
print "Password di $login Remoto : ";
ReadMode 'noecho';
chomp ($passwd = <STDIN>);
ReadMode 'normal';
#
# Oltre a generare un file di LOG stampo sulla STDOUT alcune informazioni
#
print "\n";
#
# Apro il file di Log in Scrittura
#
open(FILEOUT, "> $fileOut");
#
# Per ogni host dell'array eseguo le seguenti operazioni
#
for($i=0;$i<=$#hosts; $i++) {
$p = Net::Ping->new();
$pingone = "Alive" if $p->ping($hosts[$i]);
$pingone = "Died" if !$p->ping($hosts[$i]);
$p->close();
print "$hosts[$i] ..... $pingone ... ";
print FILEOUT "------------------ $hosts[$i] ---------------------\n";
print FILEOUT "ping $hosts[$i] : $pingone\n\n";
if($pingone eq 'Alive') {
$t = new Net::Telnet(Timeout => 10,
Errmode=>'return'
);
$t->open("$hosts[$i]");
$t->login($login, $passwd);
$msg = $t->errmsg;
if($msg eq '') {
print FILEOUT "$comando \n";
@lines = $t->cmd("$comando");
print FILEOUT @lines;
print "Done ...\n";
}
else {
print FILEOUT "Error Message : $msg \n";
print "NOT Done ... ErrMsg : $msg\n";
}
}
else {
print "NOT Done ...\n";
}
print FILEOUT "--------------------------------------------------\n\n\n";
}
#
# Chiudo il file di LOG
#
close FILEOUT;
#
# Stampo sulla STDOUT un messaggio di fine operazioni
#
print "\nOperazione Conclusa. Prego visualizzare file $fileOut\n\n";
__END__
--
GioacchinoBisconti - 03 May 2005