问题描述
我使用的是安装在 Centos 8 服务器上的 Rundeck 3.4.0 版。
我安装了 WinRM Node Executor Python 插件版本 2.0.12 以在 Windows 2016 服务器上运行作业。
尝试删除 Windows 服务器上文件的简单 .bat 作业始终成功,即使该文件不存在。
在带有 ssh 的 Linux 服务器上运行的相同作业在文件不存在时失败。
我确切地说我对 Rundeck 非常陌生。
非常简单的 .bat 文件:
:: Rundeck delete file
::
@ECHO OFF
del C:\users\winrmuser\Documents\CreateFile_%1.log
EXIT
和工作定义:
- <joblist>
- <job>
<defaultTab>nodes</defaultTab>
<description />
- <dispatch>
<excludePrecedence>true</excludePrecedence>
<keepgoing>false</keepgoing>
<rankOrder>ascending</rankOrder>
<successOnEmptyNodeFilter>false</successOnEmptyNodeFilter>
<threadcount>1</threadcount>
</dispatch>
<executionEnabled>true</executionEnabled>
<id>9c33bba8-223a-4f55-9a71-16b239eac465</id>
<loglevel>INFO</loglevel>
<name>Test horus delete file</name>
<nodeFilterEditable>false</nodeFilterEditable>
- <nodefilters>
<filter>horus</filter>
</nodefilters>
<nodesSelectedByDefault>true</nodesSelectedByDefault>
- <notification>
- <onfailure>
<email attachLog="true" attachLogInFile="true" recipients="xxx@yyy.zzz" />
</onfailure>
- <onsuccess>
<email attachLog="true" attachLogInFile="true" recipients="xxx@yyy.zzz" />
</onsuccess>
</notification>
<notifyAvgDurationThreshold />
<plugins />
<scheduleEnabled>true</scheduleEnabled>
- <sequence keepgoing="false" strategy="node-first">
- <command>
<description>DeleteFile</description>
<exec>C:\Users\winrmuser\Documents\RundeckDeleteFile.bat New</exec>
- <plugins>
- <LogFilter type="key-value-data">
- <config>
<invalidKeyPattern>\s|\$|\{|\}|\\</invalidKeyPattern>
<logData>false</logData>
<name>DeleteFailed</name>
<regex>^RUNDECK:DATA:\s*([^\s]+?)\s*=\s*(.+)$</regex>
</config>
</LogFilter>
- <LogFilter type="highlight-output">
- <config>
<bgcolor>red</bgcolor>
<fgcolor>green</fgcolor>
<mode>bold</mode>
<regex>Failed</regex>
</config>
</LogFilter>
</plugins>
</command>
</sequence>
<uuid>9c33bba8-223a-4f55-9a71-16b239eac465</uuid>
</job>
</joblist>
预先感谢您的帮助。
解决方法
它现在可以工作,但我必须修改我的批处理作业 :: Rundeck delete file :: @ECHO OFF dir "C:\users\winrmuser\Documents\CreateFile_%1.log" IF %ERRORLEVEL% EQU 0 ( del C:\users\winrmuser\Documents\CreateFile_%1.log echo 成功) else ( EXIT )