我可以毫无问题地从命令行运行 Perl 脚本,但是当我尝试使用 Windows 任务管理器(64 位 Windows 2008 服务器)自动执行此任务时,无法将 SSH/SSH2 的输出写入输出文件。它是一个 perl 脚本,它执行以下操作:
my $DB_FILE1=$PATH . "\\FSBusinessUtil_" . $hostfqdn . $DATE;
open( OUTFILE, ">$DB_FILE1" ) or die "Could not open data file ";
print OUTFILE "FilesystemInfo\n";
my $output1=`$SSH_PATH\\ssh $user\@$hostname NAS_DB=/nas /nas/bin/./nas_fs -list`;
if($? != $RC_OK){
open( OUT1FILE, ">$PATH\\errFSBusinessUtil_$hostfqdn$DATE");
print OUT1FILE localtime(time) . " Remote ssh failed to create $DB_FILE1. Error: $output1\n";
close OUT1FILE;
}
else {
$output1=~ s/%%%/\n/g;
print OUTFILE $output1;
}
close OUTFILE;
Perl 脚本本身被 Windows 任务计划程序调用,但在输出文件中,我看到的只是脚本在调用 ssh 命令之前打印出来的“FilesystemInfo”行。除此之外,该命令确实失败了,因为我看到了生成的错误文件。但是,$output1 仍然是空的,所以只有“远程 ssh 无法创建...错误:”。