簡體   English   中英

在bash腳本中運行命令,同時輸出並捕獲結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM