[PERL] script perl avec ssh ss echange de clé

Fermé
manu_ch44 Messages postés 6 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 13 février 2014 - 27 janv. 2012 à 16:38
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 31 janv. 2012 à 15:08
Bonjour,

Sous UNIX:

Je voudrais écrire un script perl qui se connecte sur un router en ssh.
je ne peux utiliser que use Net::SSH qw(ssh_cmd ssh issh sshopen2 sshopen3); parmi les librairies SSH.
lorsque j'utilise:

1) ssh_cmd:
print "Connecting to MAMACHINE01$IP ..........\n";
ssh_cmd("user\@$IP", "$cmd");
j'obtiens:
Connecting to 10.10.10.14 ..........
Permission denied (publickey,password,keyboard-interactive).
=> Normal, car je n'ai pas échangé les clés, chose que je ne peux pas faire.

2)issh:
print "Connecting to MAMACHINE01$IP ..........\n";
issh ("user\@$IP", "$cmd") ;

j'obtiens:
Connecting to 10.10.10.14 ..........
ssh user@10.10.10.14
Proceed [y/N]:y
user@10.10.10.14's password:xxxxxx

MAMACHINE01>
=> Dans ce cas, c'est à moi de taper y puis le mot de passe, alors que j'aurais voulu que ce soit le script qui le fasse

3)sshopen2 et sshopen3:
j'ai essayé mais toujours pas réussi.


=> une idée ?

Merci d'avance pour votre aide
Manu
A voir également:

3 réponses

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 27/01/2012 à 18:13
Salut manu_ch44,

La réponse à ta question est là : https://metacpan.org/pod/release/IVAN/Net-SSH-0.09/SSH.pm

Je cite :

FREQUENTLY ASKED QUESTIONS ^  

Q: How do you supply a password to connect with ssh within a perl script using the Net::SSH module?  

A: You don't (at least not with this module). Use RSA or DSA keys. See the quick help in the next section and the ssh-keygen(1) manpage.  

A #2: See Net::SSH::Expect instead.

Donc : https://metacpan.org/pod/release/BNEGRAO/Net-SSH-Expect-1.09/lib/Net/SSH/Expect.pod


Dal
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 27/01/2012 à 18:12
Cela dit.. si tu as accès en ssh, je ne comprends vraiment pas pourquoi tu ne pourrais pas créer des clefs et mettre ta clef publique dans le fichier .ssh/authorized_keys du compte auquel tu accèdes. C'est quand même mieux que d'avoir des scripts où le mot de passe se balade en clair.
0
manu_ch44 Messages postés 6 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 13 février 2014
31 janv. 2012 à 14:22
Merci pour vos réponses.
Mais mon systèmes est fait de cette façon.
Il va falloir que j'ouvre la librairie pour envoyer le mot de passe et là ....

Je ne peux pas installer la lib :Net::SSH::Expect

Si vous avez des idées, je suis preneur.
Merci
Manu
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
31 janv. 2012 à 15:08
Salut manu_ch44,

Pourquoi ne peux-tu pas installer le module Perl Net::SSH::Expect (ce n'est pas une librairie, c'est un module Perl) ? Est-ce en raison de restrictions de "ton système", ou est-ce parce que tu as un message d'erreur en utilisant CPAN, ou que tu ne sais pas comment installer un module Perl ?

Autrement, si expect est déjà installé dans ton système :

$ whereis expect
expect: /usr/bin/expect

Tu peux créer un script expect.

Vois un exemple ici : https://forums.commentcamarche.net/forum/affich-24228280-script-expect-pour-recuperer-la-configuration

C'est un exemple pour Telnet. Adapte le à tes besoins.


Dal
0