2009-06-15 8 views
0

Dans Net::SCP à quel point ai-je besoin de touches DSC ou RSA (c'est-à-dire quand est-ce que j'utilise les fonctions get ou put)? Je voudrais savoir que le service scp est disponible sans transférer le fichier.Comment puis-je déterminer si scp est disponible à partir de Perl?

+0

La question semble étrangement familière. Vous n'avez pas aimé les réponses que vous avez ici: http://stackoverflow.com/questions/985551/how-can-i-detect-if-scp-service-is-available-at-remote-host-with-out -Envoyer-le? – innaM

+0

La réponse ne change pas si vous posez la même question trois fois. –

+1

Etes-vous sûr? Regarder mes enfants interagir avec leur mère contredit votre déclaration ... – lexu

Répondre

3

par the docs in CPAN, vous en avez besoin avant même importation ce module, et je cite:

« » » Q: Comment alimentez-vous un mot de passe pour se connecter avec ssh dans un script Perl utilisant le Net :: module SSH

A:... vous ne pas utiliser des clés RSA ou DSA Voir la ssh-keygen (1) manpage

"" »

en d'autres termes, NET::SCP est conçu pour être utilisé avec l'authentification SSH "sans mot de passe" via des paires de clés privées/publiques pré-générées et propagées.

+0

Vous citez Net :: SCP 0.07; les docs 0.08 ajoutent: A # 2: Voir Net :: SCP :: Expect à la place. – ysth

1

Puisque Net::SCP est un wrapper à scp, vous n'avez pas besoin de fournir les clés du script (ce qui signifie que vous ne pouvez pas). Vous (ou quelqu'un d'autre) devez effectuer la configuration en configurant ssh avant d'essayer de l'utiliser.

NET :: SCP n'est pas destiné à être utilisé 'ad hoc'. Il nécessite la configuration de ssh et l'échange de clés.

EDIT incorporés commentaire des ysth

+0

scp peut certainement être utilisé ad hoc, avec une invite pour les mots de passe. Peut-être que vous vouliez dire "Net :: SCP n'est pas destiné ..." – ysth

+0

yepp .. c'est ce que je voulais dire .. Je vais corriger ma réponse, merci! – lexu

1

Si tout ce que vous voulez est de vérifier si le système distant est à l'écoute sur le port ssh/scp, vous pouvez essayer pinger:

use Net::Ping; 
$p = Net::Ping->new("tcp", 2); 
$p->port_number(scalar(getservbyname("ssh", "tcp"))); 
if ($p->ping($hostname)) { 
    print "ok!"; 
} 

Vous pouvez utiliser Net :: SSH ou Net :: SSH :: Expect ou Net :: SSH2 ou Net :: SSH :: Perl si vous avez des clés ou un mot de passe et que vous voulez vérifier que vous pouvez vous connecter sans transférer de fichiers.

1

Si vous envisagez d'utiliser SSH à l'aide de l'authentification par mot de passe, consultez la section Net::SSH::Perl.