我想通过远程程序运行一些命令。我已经尝试使用以下代码。
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模块?
答案 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