在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!」失敗,這將導致命令中止。「 –
我無法控制引發的異常,所以如何返回異常中的某個值?我瞭解捕捉如何工作,我希望它在失敗時能夠返回。腳本無法正常工作的原因很多,我想尋找某個腳本,並在出現「錯誤」時執行某些操作。 –