perl ssh没有模块

时间:2013-09-11 15:34:48

标签: perl ssh

我无法安装net :: ssh等模块,因为我没有授权,还有其他更复杂的原因 - 所以我必须采用旧时尚的方式,

my $host = "box215";
my $cmd_proc = "/bin/ps -ef";
my $cmd_disk = "df -h";
my $cmd = "ssh -n -o ConnectTimeout=20 $host '$cmd_proc ; $cmd_disk' ";

是我到目前为止。

我想基本上从框中获取进程和磁盘空间并返回它。但是我不知道如何处理该框的密码提示。

3 个答案:

答案 0 :(得分:1)

我会使用一个有限的权限帐户,该帐户使用不需要密码的SSH密钥对服务器进行身份验证。

http://www.paulkeck.com/ssh/

答案 1 :(得分:1)

可以非常轻松地在本地安装Perl模块。这就是我经常这样做的方式 下载并解压缩CPAN模块并cd到Makefile.PL的位置并执行以下命令。 <path>是您拥有完全访问权限的地方。

perl Makefile.PL PREFIX=<path> LIB=<path>
make
make test
make install

要在Perl脚本中使用该模块,只需在脚本的开头添加以下内容

use lib '<path>';

答案 2 :(得分:0)

如果确实绝对 无法安装任何 Perl模块,那么您的选项将受到更多限制。我只是接受你的话,并假设你提到的因为无法安装模块的“其他更复杂的原因”与你的老板威胁生命的CPAN过敏或同样可怕的事情有关,这些都没有得到解决通过本地安装。以下是一些(不太理想)选项:

  1. (最佳选择)让您的系统管理员设置ssh密钥,这样您就无需输入密码即可连接到远程主机。即使你可以使用Perl模块,你真的应该这样做。
  2. 使用expect脚本发送密码。当然,这需要安装,这与选项#1可能需要访问您的系统管理员,并伴随着一点点卑鄙和/或贿赂。如果你走这条路,here是一个很好的教程(期待,而不是卑躬屈膝)。但老实说,如果你所使用的只是发送你的ssh密码,你会引入很多不必要的复杂功能,可以通过设置ssh密钥轻松处理(参见选项#1)。
  3. 请注意,这两个选项都可能要求您向系统管理员寻求帮助。如果他/她已经要安装/配置某些东西,你也可以要求他们为你安装一些Perl模块(Expect.pmNet::SSH2)(当然,除非,有人可能会因此而死亡或变得非常毁容。)