Perl脚本,通过SSH登录到路由器



我对perl脚本完全陌生,我需要编写一个脚本来登录到路由器并执行一些命令。我已经尝试了下面的脚本,但我得到一个错误为"无法找到Net/SSH"有人能告诉如何安装模块或有更好的脚本…?

#!/usr/bin/perl -w
use strict;
use lib qw("/path/to/module/");
use Net::SSH::Perl;
my $hostname = "hostname";
my $username = "username";
my $password = "password";
my $cmd = shift;
my $ssh = Net::SSH::Perl->new("$hostname", debug=>0);
$ssh->login("$username","$password");
my ($stdout,$stderr,$exit) = $ssh->cmd("$cmd");
print $stdout;

我建议您使用Net::OpenSSH,因为我过去在安装Net::SSH::Perl时遇到了很多问题。要安装Net::OpenSSH,您可以通过cpan (cpan install Net::OpenSSH)安装它,其用法与Net::SSH::Perl几乎相同。关于Net::OpenSSH - http://search.cpan.org/~salva/Net-OpenSSH-0.62/lib/Net/OpenSSH.pm

的使用,请参考此

您正在程序开始时加载Net::SSH。

use Net::SSH

但是稍后,当您实际使用该模块时,您将使用Net::SSH::Perl -这是一个完全不同的模块。

您得到的错误表明您的系统上没有安装Net::SSH。如果您想安装它,最简单的方法可能是使用操作系统的打包系统。假设您在Linux上,可以是这样的:

$ sudo yum install perl-Net-SSH

$ sudo apt-get install libnet-ssh-perl

但是看看你剩下的代码,我想你是在尝试使用Net::SSH::Perl。在这种情况下,您可能只想将use Net::SSH更改为use Net::SSH::Perl

根据您的操作系统,您可能会像这样安装Net::SSH:

sudo perl -MCPAN -e 'install Net::SSH'

根据您实际想要在路由器上做什么,您可能会发现expect更容易…

最新更新