[Perl]Net::SSH2 Verifier la connexion
fxtaa
Messages postés
1170
Statut
Membre
-
Mr_Djez -
Mr_Djez -
Bonjour,
j'utilise le module ssh2 de perl pour me connecter a un certain nombre de machine à la suite. Malheureusement, lorsqu'une des machines ne répond pas, le script plante...
J'ai essayé d'enlever les "or die" mais ca n'a rien changé.
L'erreur est à la ligne "$ssh2->connect($HOST)"
Je souhaiterai effectuer un test de connexion sans pour autant faire planter le script si une machine ne répond pas.
Voici le code :
Cordialement.
Fxta
j'utilise le module ssh2 de perl pour me connecter a un certain nombre de machine à la suite. Malheureusement, lorsqu'une des machines ne répond pas, le script plante...
J'ai essayé d'enlever les "or die" mais ca n'a rien changé.
L'erreur est à la ligne "$ssh2->connect($HOST)"
Je souhaiterai effectuer un test de connexion sans pour autant faire planter le script si une machine ne répond pas.
Voici le code :
use Net::SSH2 ;
my $ligne;
open ( FILE , "pass.txt" ) or die "Erreur interne pass.txt\n" ;
while ( $ligne = <FILE> ) {
@t = split(";" , $ligne ) ;
for ( my $i = 0 ; $i <= $#t; $i ++) {
if ( $i == 0 ) {
$serveur=$t[$i];
$i ++;
}
if ( $i == 1 ) {
$log=$t[$i];
chomp ($log);
$i ++;
}
if ( $i == 2 ) {
$pass=$t[$i];
chomp ($pass);
}
}
#connexion SSH
my $HOST = "$serveur" ;
my $LOGIN = "$log" ;
my $PWD = "$pass" ;
my $CMD = "COMMANDE A EXECUTER" ;
my $ssh2 = Net::SSH2->new();
print "Connexion au serveur $HOST :" ;
$ssh2->connect($HOST) or die "Unable to connect to $HOST, $! $@" ;
$ssh2->auth_password( $LOGIN , $PWD ) or die "Unable to login $!" ;
$ssh2->debug(0);
print " OK\n" ;
$CMD =~ s/;/ 2>\&1;/g ;
# Execution de $CMD
my $channel = $ssh2->channel();
$channel->blocking(1);
$channel->exec( $CMD );
my $result = "" ;
while( $channel->read( my $buffer , 4096 ) ) {
$result .= $buffer ;
}
print "<STDOUT>\n" ;
print "$result \n" ;
print "<fin STDOUT>\n" ;
$channel->close;
$ssh2->disconnect();
print "SSH OK\n" ;
}
Cordialement.
Fxta
A voir également:
- [Perl]Net::SSH2 Verifier la connexion
- Net framework 2.0 - Télécharger - Divers Utilitaires
- Paint net - Télécharger - Dessin & Illustration
- Logo .net - Télécharger - Études & Formations
- Net framework 4.0 - Télécharger - Divers Utilitaires
- .Net runtime optimization service ✓ - Forum Windows 8 / 8.1
2 réponses
Salut;
je pense que depuis le temps tu a du trouver... mais:
tu pourrai mettre le "$ssh2->connect($HOST)" dans une condition:
if ( $ssh2->connect($HOST) ) {
.
.
.
}
else {
.
.
.
}
et même aller plus loin ;) :
if ( $ssh2->connect($HOST) ) {
print q(Ok\tconnect\n);
if ( $ssh2->auth_password( $LOGIN , $PWD ) ) {
print q(Ok\tauth_passwordt\n);
.
.
}
else {
print q(Fail\tauth_password\n);
.
.
}
.
.
}
else {
print q(Fail\tconnect\n);
.
.
}
je pense que depuis le temps tu a du trouver... mais:
tu pourrai mettre le "$ssh2->connect($HOST)" dans une condition:
if ( $ssh2->connect($HOST) ) {
.
.
.
}
else {
.
.
.
}
et même aller plus loin ;) :
if ( $ssh2->connect($HOST) ) {
print q(Ok\tconnect\n);
if ( $ssh2->auth_password( $LOGIN , $PWD ) ) {
print q(Ok\tauth_passwordt\n);
.
.
}
else {
print q(Fail\tauth_password\n);
.
.
}
.
.
}
else {
print q(Fail\tconnect\n);
.
.
}