我正在使用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操作。 我疯了,有人能帮帮我吗?
答案 0 :(得分:0)
我发现了这个问题。 看到日志,我注意到SShActionExecutor查看了错误的stdout文件。这是我在日志中找到的命令
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
但生成的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。