[PERL] Executer commandes à distances / ssh

Résolu/Fermé
Houston-12 Messages postés 33 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 23 juin 2009 - 5 juin 2009 à 11:17
Houston-12 Messages postés 33 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 23 juin 2009 - 23 juin 2009 à 11:06
Bonjour,

Dans le cadre de l'administration de plusieurs serveurs, je cherche a créer un script qui effectue différentes commandes system sur une liste de serveur et qui renvoie les résultats dans un fichier local, le tout via ssh.

Jusqu'à présent, j'ai fait ceci :
#!/usr/bin/perl

use Net::SSH2;
use Net::SSH2::Channel;

my $ssh2 = Net::SSH2->new();
$ssh2->method('HOSTKEY', 'aes256-cbc');
$ssh2->connect('@IP') or die "Connexion impossible !\n";
$ssh2->auth_publickey ('root', 'c:/id_rsa.pub', 'c:/identity');

my $cmd = $ssh2->channel();
$cmd->shell('ps -ef');
while (<$cmd>){ print } 

Il me renvoie l'erreur "Can't call method "shell" on an undefined value at c:\test3.pl line 12."
L'erreur est la même si j'utilise la méthode exec.

Pouvez vous m'aidez ?

Merci
A voir également:

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
5 juin 2009 à 15:12
Salut,

$cmd->shell('ps -ef');
Si c'est ça la ligne, alors sous windows il n'y a pas la commande ps
0
Houston-12 Messages postés 33 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 23 juin 2009 1
5 juin 2009 à 15:16
Salut lami20j,

Le pc qui execute le script est sous windows mais les serveurs sur lesquels je me connecte sont sous Unix.
L'objectif est de lancer des commandes sur ces serveurs et de récuperer le resultat en local.

Merci
0
Houston-12 Messages postés 33 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 23 juin 2009 1
12 juin 2009 à 14:13
up
0
Houston-12 Messages postés 33 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 23 juin 2009 1
23 juin 2009 à 11:06
Bonjour,

Le problème a été contourné en utilisant plink et la commande system :
system ('plink -m commandes.txt root@$adresse_ip');

Cordialement
0