2011-03-31 45 views
0

我想通过远程程序运行一些命令。我已经尝试使用下面的代码。如何在标准的perl中执行远程执行5.10.0

my $promt = '/bash\$ $/';  
use Net::Telnet(); 

$conn = new Net::Telnet (Timeout => 10, Prompt => $promt); 
$conn->open($host); 
$conn->login($username, $passwd); 
@lines = $conn->cmd("who"); 
print @lines; 

但它给错误, 不能在@INC定位网/ Telnet.pm .....

有没有办法做到不改变这个任务,将标准的Perl 5.10.0模块?

+2

为什么不只是安装Net :: Telnet? (请不要回复说您没有root权限 - 您不需要它。请参阅perlmodinstall以获取安装您自己的模块私人副本的详细信息。) – 2011-03-31 05:51:32

+0

是Net :: Telnet软件包是默认软件包在Perl中?至少在最新版本中?手动添加软件包不是解决方案,因为不同的用户将使用此远程程序来访问源程序。有没有办法自动化软件包安装,如果它不可用??? – DarRay 2011-03-31 06:17:39

回答

0

伊夫解决在使用该功能的问题...

# Get the needed values from the database 
sub Execute_Remote_Command($) { 
    print "sshpass -p $password ssh $user\@$host '$_[0]'\n"; 
    print `sshpass -p $password ssh $user\@$host '$_[0]'`; 
    print `exit`; 
} 

功能-Execute_Remote_Command-需要其需要的远程计算机中运行的参数。

这里唯一需要的附加要求是支持sshpass命令,它可以使用下面的url进行下载。 http://linux.softpedia.com/get/Security/Sshpass-8693.shtml

2

只需在自己的用户路径中安装Net :: Telnet perl模块。或者如果你没有绑定到perl,我建议在远程系统上运行命令的最佳方式是SSH。

$ssh [email protected] 'command' 

这会给你在标准输出结果。

例子:

[email protected]:~ # ssh [email protected] 'who' 
brock pts/0 Oct 21 10:31 (75.72.194.149) 
jim pts/1 Oct 25 06:25 (128.101.163.128) 

您可以在 “Run Remote Command with SSH” 更多一些。

+0

可以请你给我一个例子.... – DarRay 2011-03-31 06:46:13

+0

再次看到我的答案。 – Space 2011-03-31 07:02:59