Création
d'entreprise
Posez votre question Signaler

[Perl]Net::SSH2 Verifier la connexion

fxtaa 720Messages postés 20 octobre 2009Date d'inscription 16 mai 2012Dernière intervention - Dernière réponse le 4 mai 2010 à 16:52
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 :

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
Lire la suite 

[Perl]Net::SSH2 Verifier la connexion »

1 réponses
Réponse
+0
moins plus
Up ^^
Ajouter un commentaire
Ce document intitulé « [Perl]Net::SSH2 Verifier la connexion » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?