[PERL] Telnet sur liste de serveur

Fermé
phoenix1984 Messages postés 30 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 9 décembre 2011 - 12 mars 2009 à 12:37
gigaga Messages postés 2346 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 - 12 mars 2009 à 12:43
Bonjour à tous ,

voici mon problème.

Je dois me connecter à un ensemble de serveur en telnet pour y passer des commandes.

J'ai déjà fait un script fonctionnel, mais je n'arrive actuellement pas à lire un fichier contenant la liste des serveurs auquels se connecter ...

Voici ce que je voudrais obtenir ...

#!/usr/bin/perl -i.orig
use lib "../sources";
use Telnet;
use Shell qw(cat);

my @host_array=cat("liste.serveurs.txt");
my $host_rsa=@host_array;


foreach $host_rsa (@host_array)

{

$session = new Net::Telnet (Prompt => '/.*\#/');
$session->open([$host_rsa]);
$session->login('USERID', 'PASSW0RD');

open(monFile,">>result.users.txt");

my @output = $session->cmd('users');
print monFile"$host_rsa\n";
print monFile"@output\n";
close(monFile);

}

$i++;



Voici ce qui fonctionne, mais avec UNE adresse IP en dur dans le code ...

#!/usr/bin/perl -i.orig
#use strict; use warnings;
use lib "../sources";
use Telnet;
use Ping;
use Shell qw(cat);

my @host_array=cat("liste.serveurs.txt");
my $host_rsa=@host_array;


$p=Net::Ping->new();
$p->close();
$stat=true;
$i=0;

$host_rsa =~s/\n//;

foreach $host_rsa (@host_array) #pour chaque host de @host_array

{

$session = new Net::Telnet (Prompt => '/.*\#/');
$session->open('192.168.0.64');
$session->login('USERID', 'PASSW0RD');


if ($p->ping($host_rsa)) #si test ping OK
{
open(monFile,">>result.users.txt");

my @output = $session->cmd('users');
print monFile"*****$host_rsa\n";
print monFile"@output\n";
close(monFile);
}

else
{
print "Serveur injoignable\n";
}
}

$i++;


dans les 2 cas pour le moment le contenu du fichier "liste.serveurs.txt" est juste une IP ... => 192.168.0.64

ca doit être tout bête mais je ne trouve pas ..

d'avance merci pour votre aide :)

1 réponse

gigaga Messages postés 2346 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
12 mars 2009 à 12:43
Essaie ça :

#!/usr/bin/perl -i.orig
use lib "../sources";
use Telnet;

open (FILE, "liste.serveurs.txt");
my @host_array=<FILE>;
close(FILE);

foreach my $host_rsa (@host_array)

{

$session = new Net::Telnet (Prompt => '/.*\#/');
$session->open($host_rsa);
$session->login('USERID', 'PASSW0RD');

open(monFile,">>result.users.txt");

my @output = $session->cmd('users');
print monFile "$host_rsa\n";
print monFile "@output\n";
close(monFile);

}

$i++; 
0