我正在使用Oozie 4.0.0运行一个简单的工作流。我需要通过SSH操作运行bash脚本,然后捕获stdout。
这是xml:
<workflow-app name="Test" xmlns="uri:oozie:workflow:0.4">
<start to="LS"/>
<action name="LS">
<ssh xmlns="uri:oozie:ssh-action:0.1">
<host>user@host</host>
<command>ls</command>
<capture-output/>
</ssh>
<ok to="Mail"/>
<error to="kill"/>
</action>
<action name="Mail">
<email xmlns="uri:oozie:email-action:0.1">
<to>myaddress@mail.com</to>
<subject>Test mail</subject>
<body>${wf:actionData('LS')}</body>
</email>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>邮件的正文只包含以下内容:
{}带有shell操作的相同脚本可以正常工作,但我需要SSH操作。我要疯了,有人能帮帮我吗?
发布于 2014-07-08 23:39:49
我找到了问题所在。通过查看日志,我注意到SShActionExecutor查看了错误的标准输出文件。这是我在日志中找到的命令
ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=no -o StrictHostKeyChecking=no -o ConnectTimeout=20 workflow@redhat5 cat oozie-oozi/0000008-140708170302737-oozie-oozi-W/fileProcessing--ssh/22350.0000008-140708170302737-oozie-oozi-W@fileProcessing@1.stdout但是生成的标准输出文件是/home/instadoc/oozie-oozi/0000008-140708170302737-oozie-oozi-W/fileProcessing--ssh/22350.0000008-140708170302737-oozie-oozi-W@fileProcessing@0.stdout
如果重新启动该操作,则添加.stdout扩展名的ID可能会有所不同(例如:@9.stdout,@4.stdout),但SShActionExecutor始终为@0.stdout。
https://stackoverflow.com/questions/24492574
复制相似问题