Linux

在 bash 腳本中擷取 Python 腳本的輸出

  • July 26, 2013

我有一個監控遊戲伺服器的腳本。它是用 bash 編寫的。但是,如果伺服器已鎖定,我正在嘗試組裝一個高級監視器以進行拾取。這需要一個小的 python 腳本來查詢伺服器,它返回 OK、ERROR 1 或 ERROR 2。擷取輸出的最佳方法是什麼?目前使用腳本,變數為空。我可以確認腳本執行正常並返回一條消息。

if [ -f serverquery.py ];then
   echo -e "[\e[0;36m INFO\e[0;39m ] Running advanced monitoring serverquery.py"
   echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Running advanced monitoring serverquery.py" >> ${logfile}
   serverquery=`./serverquery.py 127.0.0.1 27015`
   if [ "${serverquery}" = "ERROR 1" ];then
       echo -e "[\e[0;31m FAIL\e[0;39m ] ${servicename}: serverquery.py Monitor detected ${servername} has crashed!"
       echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py Monitor detected ${servername} has crashed!" >> ${logfile}
       fn_restartserver
   elif [ "${serverquery}" = "ERROR 2" ];then
       echo -e "[\e[0;31m FAIL\e[0;39m ] ${servicename}: serverquery.py Monitor detected ${servername} has crashed!"
       echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py Monitor detected ${servername} has crashed!" >> ${logfile}
       fn_restartserver
   fi
fi

謝謝

將 2>&1 添加到末尾,它現在正在工作

例如

serverquery=$(./serverquery.py 127.0.0.1 27015 2>&1)

如果您有權編輯 serverquery.py,我會更改錯誤條件的退出值,然後$?在執行它後簡單地檢查值。如果不是,請嘗試將您的 if 條件輸出檢查更改為 val0x00ff: 建議的格式if [[ "${serverquery}" == "ERROR 1" ]]; then ... fi

引用自:https://serverfault.com/questions/526513