在Capistrano的2.X,你可以简单地添加继续当脚本失败(错误),并捕获输出在Capistrano 3.x或ssh-kit(底层通信)中这样做。任何帮助,将不胜感激。如何使用Capistrano的3
task :bad_script do
server_is_down
on roles :all do
begin
server_is_down = capture('/path/to/tomcat/shutdown.sh')
rescue
#do something if server_is_down has the correct text
end
end
end
end
我已经试过周围的新方式开始/救援块,但只能阻止它示数,但它并没有从错误中返回输出。
我仍然想知道如何做到这一点,但我想出了一种解决方法来解决我的一种情况,那就是如果服务器失败就设置服务器。
task :bad_script do
server_is_down = false
on roles :all do
begin
execute('/path/to/tomcat/shutdown.sh')
rescue
server_is_down = true
end
end
end
end
这是假设它只在发生关机时出错。
从我在https://github.com/capistrano/sshkit/blob/7f779a9a24fcc7fae179a20a652429e4bac454fa/lib/sshkit/backends看/netssh.rb,它不应该产生任何异常 –
从https://github.com/capistrano/sshkit/blob/52797aeecc07190ca47ec5c3315243cd95b568fd/EXAMPLES.md “执行,如果出现问题引发错误的主机 做|主机| 执行!(:echo,'“示例消息!”1>&2; false') end 这会引发SSHKit :: Command:使用#message“Example Message!”失败,这将导致命令中止。“ –
我无法控制引发的异常,所以如何返回异常中的某个值?我了解捕捉如何工作,我希望它在失败时能够返回。脚本无法正常工作的原因很多,我想寻找某个脚本,并在出现“错误”时执行某些操作。 –