【发布时间】:2014-02-10 06:00:36
【问题描述】:
我有一个第三方 perl 脚本,我需要用 puppet 运行它。在脚本中有一些命令可以使用以下 perl 语句创建目录:
system("mkdir -p /tmp/agent") && die "failed to create agent dir";
我可以使用 root 用户手动运行脚本而没有任何问题。但是,当我使用 puppet 运行脚本时:
exec {'install agent':
command => "perl /tmp/install_agent.pl",
creates => '/tmp/agent/agent',
path => '/usr/bin',
}
我收到以下错误:
Error: perl /tmp/install_agent.pl returned 2 instead of one of [0]
当我尝试捕获系统调用的返回值时,我得到了 -1。通过更多测试,似乎所有系统调用都以-1失败。
有什么建议吗?谢谢!
【问题讨论】:
-
查看
${^CHILD_ERROR_NATIVE}中的die语句以获取子调用的返回值。 -
或者,将
system()调用更改为对mkdir()的本机调用,然后如果您遇到任何故障,您可以查看$!以获取更多信息。 -
${^TAINT} = 0 和 ${^CHILD_ERROR_NATIVE} = -1
-
而mkdir()返回1,目录创建成功....