如何在标准perl 5.10.0中进行远程执行

时间:2011-03-31 05:47:58

标签: perl telnet

我想通过远程程序运行一些命令。我已经尝试使用以下代码。

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中找到Net / Telnet.pm .....

是否可以在不更改的情况下执行此任务,添加标准的perl 5.10.0模块?

2 个答案:

答案 0 :(得分:2)

只需在您自己的用户路径中安装Net :: Telnet perl模块即可。或者,如果你不受perl约束,我建议在远程系统上运行命令的最好方法是SSH。

$ssh user@ip 'command'

这将以STDOUT为您提供结果。

示例:

root@www:~ # ssh root@www '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”找到更多内容。

答案 1 :(得分: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`;
}

Function -Execute_Remote_Command-需要一个需要在远程机器上运行的参数。

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