Ecriture dans un fichier et prompt
Bonjour,
Je dois récupérer des informations sur plusieurs machines à distance. Pour ce faire, je dois me connecter sur chacune et lancer des commandes et scripts pour récupérer ces informations.
Lorsqu'il n'y a que des commandes, je sais comment faire, j'utilise une fonction du package net::OpenSSH $ssh->capture et je récupère le résultat de la commande que je balance dans un fichier.
Quand c'est pour des scripts intéractifs, j'utilise Net::SSH::Expect :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
my $ssh = Net::SSH::Expect-> new (
host => "x.x.x.x",
password => "pass",
user => "user",
raw_pty => 1,
);
my $login_output=$ssh->login();
$ssh->send("su login");
$ssh->waitfor('password:',10) or die "prompt 'password' not found after 10 seconds";
$ssh->send($pass);
@output = $ssh->exec("route -n");
foreach (@output)
{
print FILE "$_";
} |
Citation:
Use of uninitialized value in string at ./test_PCRF.pl line 243.
[EDIT] Connexion OK en SSH, mais pas su
Problème : Prompt recopié après chaque commande dans le fichier et erreur Use of uninitialized value in string toujours active
[/EDIT]
Code:
1 2 3 4 5 6
|
@res = $ssh->exec("cat /etc/xxx/xxx.conf");
foreach (@res)
{
print FILE "$_";
} |
@res est uninitialized ?! Etrangement, j'ai fais exactement la même chose sur d'autres fichiers et ça marche. De plus, quand je le fais à la main, ça fonctionne.
résultat du fichier :
Citation:
xx - bonding.conf
su: incorrect password
^[]0;login@machine:~^G[login@machine ~]$ alias .... bonding
alias .... bonding
xx - network
^[]0;login@machine:~^G[login@machine ~]$ NETWORKING=yes
HOSTNAME=machine
GATEWAY=@IP
NOZEROCONF=1
NETWORKING_IPV6=no
Merci !