Назад | Перейти на главную страницу

Захват вывода скрипта Python в скрипт bash

У меня есть скрипт, который следит за игровыми серверами. Написано на 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, я бы изменил значение выхода для условий ошибки, а затем просто проверил бы значение $? после запуска. Если нет, попробуйте изменить условную проверку вывода на формат, предложенный val0x00ff: if [[ "${serverquery}" == "ERROR 1" ]]; then ... fi.