<pre name="code" class="python">Net::SSH::Perl - Perl client Interface to SSH   Perl SSH的客户端接口

   use Net::SSH::Perl;
    my $ssh = Net::SSH::Perl->new($host);
    $ssh->login($user, $pass);
    my($stdout, $stderr, $exit) = $ssh->cmd($cmd);

	As of version 1.00, Net::SSH::Perl supports both the SSH1 and
SSH2 protocols natively. The two protocols have different
module prerequisitives, so you need to decide which protocol(s)
you plan to use. If you use one or the other, only those modules
for your chosen protocol will be installed; if you choose both,
all of the supporting modules will be installed. Please choose
the protocols you'd like to use from the following list ("Both"
is the default).

    [1] SSH1
    [2] SSH2
    [3] Both SSH1 and SSH2

	版本1.00, Net::SSH::Perl 支持SSH1和SSH2协议。

	两个协议有不用的模块前提, 因此你需要确定哪些协议 你计划使用。

	如果你使用一个或者另一个,只有那些协议你选择的协议会被安装

	默认BOTH
Can't locate Net/SSH/Perl.pm in @INC (you may need to install the Net::SSH::Perl module) (@INC contains: /usr/local/perl/lib/site_perl/5.22.1/x86_64-linux /usr/loca-linux /usr/local/perl/lib/5.22.1 .) at a1.pl line 1.
那就是你的perl没找到SSH模块,你可以搜一下你的这个模块撞到哪里了,然后做个连接过去.

find / -name SSH

解决:
demo:/root/.cpan/build/Net-SSH-Perl-2.01-czM_pl/blib/lib/Net# cp -R SSH/ /usr/local/perl/lib/site_perl/5.22.1/x86_64-linux/Net/	

demo:/root/auto# cat a1.pl
use Net::SSH::Perl;
my $host='192.168.32.79';
my $user='root';
my $passwd='1234567';
my $ssh = Net::SSH::Perl->new($host,port=>22);
$ssh->login($user,$passwd);
my ($stdout,$stderr,$exit) = $ssh->cmd("/sbin/ifconfig -a");
$ssh->cmd("exit");
if($stderr){
print "ErrorCode:$exit\n";
print "ErrorMsg:$stderr";
} else {
print $stdout;
}
exit $exit;
demo:/root/auto# perl a1.pl
eth2      Link encap:Ethernet  HWaddr 00:0C:29:93:33:89
          inet addr:192.168.32.79  Bcast:192.168.32.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe93:3389/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:90162891 errors:0 dropped:0 overruns:0 frame:0
          TX packets:54468730 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6508620253 (6.0 GiB)  TX bytes:4434025169 (4.1 GiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:49500737 errors:0 dropped:0 overruns:0 frame:0
          TX packets:49500737 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:48929124401 (45.5 GiB)  TX bytes:48929124401 (45.5 GiB)

		  描述:

		  Net::SSH::Perl是一个all-Perl 模块实现一个SSH客户端, 兼容SSH-1和SSH-2协议。

		  NET:SSH:Perl 让你简单的和安全的执行命令在远端的机器,

		  接收输出,错误输出,远端命令的退出状态。

		  它包含内置的支持各种认证方法(password 认证,RSA 询问响应 认证)

		  它完全实现了I/O 缓存,packet传输,使用SSH协议的用户认证,

		  并使用外部的Perl库 来处理所有数据在不安全的网络环境下的发送加密

		  它也读取存在的SSH配置文件。

		  使用Net::SSH::Perl 的一个优势封装实现ssh clients

		  节约了处理的开销:你不需要fork和执行一个单独的进程来连接一个sshd.

		  根据时间的总量和内存需要来fork一个进程, 这个是相当可观的,

		  特别是 如果你需要运行在一个持久的Perl环境(mod_perl,比如)

		  派生一个新的进程是一个消耗内部资源的过程。

		  它还简化了处理使用基于密码的认证过程,当写一个封装ssh你可能需要使用Expect

		  来控制ssh客户端,然后给它密码。

		  Net::SSH::Perl  已经内置支持认证协议,因此不在有任何麻烦在任何外部进程通信的问题

		  SSH2协议支持(目前Net::SSH::Perl版本是1.00) 是兼容SSH2 在OPENSSH,

		  也应该完全兼容官方的SSH涉及。

		  如果你找到一个SSH2 涉及不兼容Net::SSH::Perl, 请让我们知道

		  如果你正在寻找SFTP支持,看一下Net::SFTP, 提供了功能齐全的SFTP实现,

		  SFTP 需要SSH2协议。

		  基本的使用:

		  使用Net:SSH:Perl 是非常简单的:

		  Net::SSH::Perl->new($host, %params)

		  设置一个新的连接,  调用new方法,连接到$host 和返回一个 Net::SSH::Perl object.

	new方法接收下面的参数:

	protocol:

	协议你希望使用这个连接: 应该是2,1,'1,2' 或者'2,1'

	第一个说,比较简单的, "只有使用协议版本(SSH-2或者SSH-1,分别的)

	后面两个指定任何一个协议被使用,但是一个协议(在逗号分隔的列表中的第一个)是优先选择的。

	对于这个原因,它是安全的使用后面的2个协议,因为它们确保了任何的方式,

	你可以去连接,如果你的服务器不支持列出的第一个协议,第2个会被使用。
	(想比你的服务器将至少支持一个协议)

	默认值是'1,2' 为了兼容OpenSSH,这意味着客户端会使用SSH-1如果server支持SSH-1,

	当然,你也可以使用user/global 配置文件

	cipher

	指定加密密码的名字 如果你希望使用这个连接,这个鄙视是一个支持的密码,

	在SSH-1, 支持的加密的名字是IDEA,DES,DES3,和Blowfish;

	在SSH-2,支持的加密是 arcfour, blowfish-cbc, and 3des-cbc.

	默认的SSH-1 加密是IDEA,

	SSH-2 加密是3des-cbc

	这个模块,远程执行shell:
	demo:/root/auto# cat a1.pl
use Net::SSH::Perl;
my $host='192.168.32.79';
my $user='root';
my $passwd='1234567';
my $cmd='sh /root/auto/a1.sh';
my $ssh = Net::SSH::Perl->new($host,port=>22);
$ssh->login($user,$passwd);
my ($stdout,$stderr,$exit) = $ssh->cmd("$cmd");
$ssh->cmd("exit");
print "\$exit is $exit\n";
if($stderr){
print "ErrorCode:$exit\n";
print "ErrorMsg:$stderr";
} else {
print $stdout;
}
exit $exit;

这个/root/auto/a1.sh 需要在192.168.32.79远端机器上,而不是本地机器上
												





											

Net::SSH::Perl 模块的更多相关文章

  1. perl 简单学习,安装perl模块

    检查是否安装了某个perl模块 有多种方式 0.perldoc perlinstall 列出所有的模块及版本号 1. perl -M模块名 -e 1(模块名不加空格) 没有返回值则说明有此模块 2.p ...

  2. Corrupted MAC on input at /usr/local/perl/lib/site_perl/5.22.1/x86_64-linux/Net/SSH/Perl/Packet.pm l

    <pre name="code" class="python">[Thu May 5 11:02:27 2016] [error] Corrupte ...

  3. Linux CPAN Perl 模块安装

    当我们想使用某些Perl模块的时候,很可能会遇到当前系统不存在这个模块的情况,这时我们可以通过使用CPAN来对相应的模块进行获取,下面就介绍一下CPAN的使用方法.首先,我们可以用perl -e 'u ...

  4. Linux下安装与使用本地的perl模块

    转自 http://www.cnblogs.com/xianghang123/archive/2012/08/23/2652806.html Linux下安装与使用本地的perl模块 在使用Linux ...

  5. linux 查看是否安装perl模块

    这里介绍两种linux中查看perl模块是否安装的方法,一种是对于单体的模块,一种是对于群体的. 单体验证: [root@root ~]# perl -MShell -e "print\&q ...

  6. linux安装perl模块

    查询perl CPAN模块   shell>perl -MCPAN -e shell cpan>install module_name   手动安装perl CPAN模块 从 CPAN(h ...

  7. perl模块安装

    转自: http://www.cnblogs.com/itech/archive/2009/08/10/1542832.html http://www.mike.org.cn/blog/index.p ...

  8. 搭建MHA时 yum 安装perl模块提示 baseurl 错误

    今天在搭建MySQL MHA  安装MHA node所需的perl模块(DBD:mysql)时遇到了一个小的错误,如果思路不对的话,还是产生不少麻烦. 现梳理记录下来. 问题现象 执行的命令 yum ...

  9. Perl模块管理

    Perl模块管理 perl有自带的模块,还有第三方模块.自带的模块是随perl安装而安装好的,第三方模块需要从CPAN(Comprehensive Perl Archive Network)上下载并安 ...

随机推荐

  1. Vmware虚拟机进入BIOS方法

    在VMware里面如何进入BIOS是个头疼的问题,因为启动界面一闪而过(下面两个图如果不设置bios.bootDelay,基本上很难抓到),即使你狂按F2或ESC键(ESC: 调整启动顺序;F2: 进 ...

  2. jq 文字上下不间断滚动实例

    <div class="ruzhuright">                     <div class="rzcontent"> ...

  3. [CS231n-CNN] Image classification and the data-driven approach, k-nearest neighbor, Linear classification I

    课程主页:http://cs231n.stanford.edu/ Task: Challenges: _________________________________________________ ...

  4. Console的使用——Google Chrome代码调试

    Google Chrome控制台为开发者提供了网页和应用程序调试的几种方法,本文通过基本操作.控制台API.命令行API来介绍控制台的使用. 基本操作 1.开启控制台     可以通过下列三种方式开启 ...

  5. HTML data属性简介以及低版本浏览器兼容算法

    实例 使用 data-* 属性来嵌入自定义数据: <ul> <li data-animal-type="bird">Owl</li> <l ...

  6. 8、web入门回顾/ Http

    1 web入门回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作      : 启动:  %tomcat%/bin/startup.bat 关闭: % ...

  7. AutoCAD按坐标打印图纸

    前几天公司要求按坐标打印DWG文件,中间走了不少弯路,好在已经搞定了,整理一下分享给大家,希望后来人少走弯路. 1. 设计需求: 公司的图纸用AutoCAD2010做成,通常一个项目的所有图纸都存放在 ...

  8. JFinal 的源代码超具体的分析DB+ActiveRecord

    我记得有人告诉我."面试一下spring源代码.看ioc.aop源代码"那为什么要看这些开源框架的源代码呢,事实上非常多人都是"应急式"的去读.就像读一篇文章一 ...

  9. 第三周LINUX学习笔记

    周期性任务丶find 文件查找:find命令 locate :在数据库中查找,非实时查找,精确度不高,查找速度快,模糊查找  /tmp/passwad/a.textfind:实时查找:速度慢  ,精确 ...

  10. Android 离线人脸识别 ArcFace 2.0 Demo开发分享

    环境要求     1.运行环境 armeabi-v7a     2.系统要求 Android 5.0 (API Level 21)及以上     3.开发环境 Android Studio   下载地 ...