playbookname中命令执行失败可以怎么处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了playbookname中命令执行失败可以怎么处理相关的知识,希望对你有一定的参考价值。

参考技术A 只需要在条件成立时调用"exit"命令即可。
ansbile-playbook是一系列ansible命令的集合,利用yaml语言编写。playbook命令根据自上而下的顺序依次执行。同时,playbook开创了很多特性,它可以允许你传输某个命令的状态到后面的指令,如你可以从一台机器的文件中抓取内容并附为变量,然后在另一台机器中使用,这使得你可以实现一些复杂的部署机制,这是ansible命令无法实现的。playbook通过ansible-playbook命令使用,它的参数和ansible命令类似,如参数-k(_ask-pass)和-K(_ask-sudo)来询问ssh密码和sudo密码,-u指定用户,这些指令也可以通过规定的单元写在playbook。
ansible-playbook的简单使用方法:ansible-playbookexample-play.yml。playbooks是一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础。Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。值得注意的是playbook是通过YAML格式来进行描述定义的。

批处理判断语句是不是执行成功的方法

我有一批处理,我想知道某一句是否执行成功了,应该怎么判断呢,例如:

我想判断if语句执行成功后才执行第10的语句,听说好像批处理每一句运行完后会有一个是否成功的标志,但不知道具体应该怎么做,谢谢!

根据系统变量%errorlevel%来判断其返回的结果,从而判断批处理是否成功执行。
errorlevel的返回值:每个命令执行之后,基本返回值0或1(0表示成功,1表示失败)
特别是内部命令,不能一概的说是系统规定的,而是命令所指定的,第三方命令(外部命令)会提供多个甚至几十个返回值但最多 256±1 个返回值,各命令的返回值含义可能各不相同。

@echo off
  ping 192.168.1.1
  IF ERRORLEVEL 1 goto MySuccess
  IF ERRORLEVEL 0 goto MyFail
  goto Goodbye
  :MyFail
  echo 命令执行成功!
  goto Goodbye
  :MySuccess
  echo 命令执行失败!
  goto Goodbye
  :Goodbye
  echo 命令已执行,结果显示在上面。
  注意,以上的代码,你只需要改动一行就足够了。
  修改这一行ping 192.168.1.1,改成为你自己的批处理命令就可以了。
  另外,判断ERRORLEVEL返回号应该由高到低。
追问:
我看到过你写的这些内容,测试过是成功的,但是我测试我上面写的就不行,你能不能帮我测试下,我自己测试,不管if有没有运行ERRORLEVEL都是 0,谢谢了

追答:
这样试试:
set "err=%errorlevel%"
if "%err%"=="0" (

//执行你要执行的语句

)

pause
参考技术A 根据系统变量%errorlevel%来判断其返回的结果,从而判断批处理是否成功执行。
errorlevel的返回值:每个命令执行之后,基本返回值0或1(0表示成功,1表示失败)
特别是内部命令,不能一概的说是系统规定的,而是命令所指定的,第三方命令(外部命令)会提供多个甚至几十个返回值但最多 256±1 个返回值,各命令的返回值含义可能各不相同。

@echo off
  ping 192.168.1.1
  IF ERRORLEVEL 1 goto MySuccess
  IF ERRORLEVEL 0 goto MyFail
  goto Goodbye
  :MyFail
  echo 命令执行成功!
  goto Goodbye
  :MySuccess
  echo 命令执行失败!
  goto Goodbye
  :Goodbye
  echo 命令已执行,结果显示在上面。
  注意,以上的代码,你只需要改动一行就足够了。
  修改这一行ping 192.168.1.1,改成为你自己的批处理命令就可以了。
  另外,判断ERRORLEVEL返回号应该由高到低。追问

我看到过你写的这些内容,测试过是成功的,但是我测试我上面写的就不行,你能不能帮我测试下,我自己测试,不管if有没有运行ERRORLEVEL都是 0,谢谢了

追答

这样试试:
set "err=%errorlevel%"
if "%err%"=="0" (

//执行你要执行的语句

)

pause

追问

还是一样哦,err始终等于0

追答

等于0就是代表执行成功了

追问

if有没有运行,err都是0,我想应该是if运行跟不运行时err值应该不一样了

追答

你的意思是if里面的语句执行并且执行成功才执行下面的语句?也就是说IF没执行的话就不执行下面的语句是吧? 那我刚才给的代码可能不适用,我再想想。

试下:
if %a% equ 2 (
set /a c=a+b
set retStr = 1
)
set "err=%errorlevel%"
if "%err%"=="0" and "%retStr%" ==" 1"(

//执行你要执行的语句

)

本回答被提问者和网友采纳
参考技术B 根据系统变量%errorlevel%来判断其返回的结果,从而判断批处理是否成功执行。
errorlevel的返回值:每个命令执行之后,基本返回值0或1(0表示成功,1表示失败)
特别是内部命令,不能一概的说是系统规定的,而是命令所指定的,第三方命令(外部命令)会提供多个甚至几十个返回值但最多 256±1 个返回值,各命令的返回值含义可能各不相同。

本来批处理检测是否成功有个错误返回值errorlevel,一般程序运行结束都会有个返回值,0表示运行成功,if %errorlevle% equ 0 echo yes
不过这个错误代码有些程序不怎么好用。。。所以一般都用管道符号&&来代替
set/a c=a+b &&set/a c=c+1 表示如果c=a+b执行成功才会执行c=c+1
参考技术C 根据系统变量%errorlevel%来判断其返回的结果,从而判断批处理是否成功执行。
errorlevel的返回值:每个命令执行之后,基本返回值0或1(0表示成功,1表示失败)
特别是内部命令,不能一概的说是系统规定的,而是命令所指定的,第三方命令(外部命令)会提供多个甚至几十个返回值但最多 256±1 个返回值,各命令的返回值含义可能各不相同。

@echo off
  ping 192.168.1.1
  IF ERRORLEVEL 1 goto MySuccess
  IF ERRORLEVEL 0 goto MyFail
  goto Goodbye
  :MyFail
  echo 命令执行成功!
  goto Goodbye
  :MySuccess
  echo 命令执行失败!
  goto Goodbye
  :Goodbye
  echo 命令已执行,结果显示在上面。
  注意,以上的代码,你只需要改动一行就足够了。
  修改这一行ping 192.168.1.1,改成为你自己的批处理命令就可以了。
  另外,判断ERRORLEVEL返回号应该由高到低。
参考技术D 什么语言,什么环境,设置一个返回值就可以了,当执行成功返回标志就行了。

以上是关于playbookname中命令执行失败可以怎么处理的主要内容,如果未能解决你的问题,请参考以下文章

构建步骤“执行 Windows 批处理命令”在詹金斯中将构建标记为失败

批处理判断语句是不是执行成功的方法

windows 批处理脚本怎么执行

TFS Release 步骤调用命令行返回失败信息的处理方法

构建步骤“执行 Windows 批处理命令”将构建标记为失败已完成:失败

hibernate 执行插入失败,该怎么处理