首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postcat不是用Perl工作,而是在CLI上工作

Postcat不是用Perl工作,而是在CLI上工作
EN

Stack Overflow用户
提问于 2014-03-30 15:24:17
回答 1查看 275关注 0票数 0

Perl脚本中的错误:

"MailID: D3B921090 postcat:致命:打开D3B921090:没有这样的文件或目录“

“主题:”

CLI上的这个命令工作得很好:“root@mail:/var/spool/后缀/递延#postcatD3B921090\\egrep "^Subject”^Subject“

“主题:测试”

当我将它放入Perl脚本中时,会有一些东西中断。我在这里看不到任何错误,因为它甚至显示了MailID文件,但是错误声明它不存在?

代码语言:javascript
复制
                   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";
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-30 15:34:16

在CLI中,您位于/var/spool/后缀/递延目录中,并在此目录中使用带有文件的postcat。在perl脚本中,您可能不在这个目录中,但是只使用带有postcat的文件名,而不给出完整的路径(readdir给出了没有路径的名称)。

尝试使用/var/spool/postfix/deferred/$node而不是$node

如果有人把一个名为";rm -rf /"的文件放到目录中,你就完了,因为得到的命令将是"postcat; rm -rf / | .... " --这一点也不好笑(命令注入)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22745811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档