[英]Run command in bash script while output and capture results
我在bash腳本中運行ansible命令ansible-playbook
,但是當ansible由於任何原因而失敗時,我需要腳本來檢測到此錯誤並處理錯誤(例如,輸出已定義的消息並exit 1
)
我似乎無法通過最佳方法仍然顯示ansible-playbook
命令的輸出,但是捕獲輸出以查找是否有錯誤然后退出bash腳本?
這是基於ansible-playbook
的輸出來檢測故障/錯誤的方式。 全部輸出可能約為100行。
[0;32m openstack: PLAY RECAP ***********************************
[0;32m openstack: ok=92 changed=73 unreachable=0 failed=1
從上面可以看到,failure failed=1
表示失敗,因此,如果存在failed=[1-9]+
,bash腳本應退出。
我試過使用類似tee
cmds,但運氣不佳。
我無法回答如何最好地捕獲命令輸出並在bash腳本中執行時仍顯示它的問題。
但這是一個非常簡單的選擇。 在ansbile.cfg
激活日志記錄 :
log_path=/var/log/ansible.log
在開始Ansible運行之前,請切碎該文件。 運行Ansible。 然后檢查日志文件中是否存在您的模式。
這就是我最終要做的事情(類似於@thatotherguy建議)
我的代碼與此類似,但不是很粗略。
log=logs/$(date +"%s")
ansible-playbook ... | tee $log
# Do some clean up tasks
if grep -q failed=[^0] "$log"; then
exit 1
rm $log
fi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.