ゲームサーバーを監視するスクリプトがあります。 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
で提案されている形式に変更してみてください。