【发布时间】:2015-03-19 19:06:46
【问题描述】:
我需要在浏览器上查看 DataPower 服务的当前状态。为此,我在 solaris 机器上开发了一个 perl cgi 脚本。
我在 Solaris 服务器上运行了一个 cgi 网络服务器,我无法从该服务器直接连接到 DataPower 设备。因此,我通过脚本连接到远程 Solaris 服务器“sun-rm”,该服务器连接到 DataPower设备。
使用脚本中的以下两个语句,我尝试在远程服务器“sun-rm”上运行命令,这将获取 daatpower 服务的当前统计信息。
system('ssh root@sun-rm "cd /tmp/dp/status; ./getstatus"');
system('scp -rp root@sun-rm:/tmp/dp/status/DPlive_Status /opt/webserver/https-util/cgi-bin2/datapower/');
但似乎网络服务器无法与“sun-rm”服务器建立安全连接,因为我可以在错误日志中看到以下错误。
Host key verification failed.
现在,由于某些安全原因,我将“sun-rm”服务器的密钥添加到网络服务器的信任库中。有什么方法可以在远程机器上运行命令?
此外,这个网络服务器安装在 solaris 机器“sun-util”上,我可以通过它对“sun-rm”进行 ssh。但是由于上述原因,无法建立从 webserver 到 'sun-rm' 的 ssh 连接。
我可以理解这可能有点令人困惑,如果需要更多解释,请告诉我?
我开发的脚本如下:
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
printf "Content-type: text/html\n\n";
print <<HTML;
<HTML>
<HEAD>
<TITLE>DataPower_Status</TITLE>
</HEAD>
HTML
system('ssh root@sun-rm "cd /tmp/dp/status; ./getstatus"');
system('scp -rp root@sun-rm:/tmp/dp/status/DPlive_Status /opt/webserver7/https-util/cgi-bin2/datapower/');
chmod(0777, '/opt/webserver7/https-util/cgi-bin2/datapower/DPlive_Status');
open (FILE, "DPlive_Status") or die "could not open filename";
while(<FILE>) {
if ($_ =~ m/^Service/)
{
printf "<TR><TD><H4>$_</H4></TD></TR>\n";
}
else {
printf "<TR><TD><p>$_</p></TD></TR>\n";
}
}
close FILE;
print <<HTML;
</body>
</html>
HTML
【问题讨论】: