Perl脚本中的错误:
"MailID: D3B921090 postcat:致命:打开D3B921090:没有这样的文件或目录“
“主题:”
CLI上的这个命令工作得很好:“root@mail:/var/spool/后缀/递延#postcatD3B921090\\egrep "^Subject”^Subject“
“主题:测试”
当我将它放入Perl脚本中时,会有一些东西中断。我在这里看不到任何错误,因为它甚至显示了MailID文件,但是错误声明它不存在?
my $num = 0;
opendir my $dh, '/var/spool/postfix/deferred/' or die "Can't open directory: $!\n";
while ( my $node = readdir($dh) )
{
next if $node =~ /^\./;
print "MailID: $node\n";
my $subject = `postcat $node|egrep "^Subject"`;#Line of error
print "Subject: $subject\n";
$num++;
}
print "\nTotal: $num\n\n";发布于 2014-03-30 15:34:16
在CLI中,您位于/var/spool/后缀/递延目录中,并在此目录中使用带有文件的postcat。在perl脚本中,您可能不在这个目录中,但是只使用带有postcat的文件名,而不给出完整的路径(readdir给出了没有路径的名称)。
尝试使用/var/spool/postfix/deferred/$node而不是$node。
如果有人把一个名为";rm -rf /"的文件放到目录中,你就完了,因为得到的命令将是"postcat; rm -rf / | .... " --这一点也不好笑(命令注入)。
https://stackoverflow.com/questions/22745811
复制相似问题