Я в процессе включения брандмауэра на виртуальной машине.Первоначально брандмауэр находится в маскированном состоянии.Я использую две функции
function status_firewall() {
RET_VAL=" "
STATUS=$(systemctl status firewalld)
MASKED=$(grep -e "masked" <<< $STATUS)
M_RET=$?
DEAD=$(grep -e "dead" <<< $STATUS)
D_RET=$?
logging "M_RET and D_RET: $M_RET, $D_RET"
if [ "${M_RET}" -eq "0" ]; then
RET_VAL=1
elif [ "${D_RET}" -eq "0" ]; then
RET_VAL=2
else
RET_VAL=0
fi
echo ${RET_VAL}
}
оператор echo выводит значение "1", если брандмауэр замаскирован
function check_firewall() {
FIREWALL=$(status_firewall)
logging "Firewall status in check_firewall: ${FIREWALL}"
if [ "$(status_firewall)" -eq "0" ]; then
logging "Firewalld service already running"
RET_VAL=0
elif [ "$(status_firewall)" -eq "1" ]; then
...
elif
...
fi
Я получаю правильное значение состояния MASKED и DEAD (0, 0) status_firewall (){...} Однако при проверке возвращаемых значений в check_firewall () {..} я получаю следующую целочисленную ошибку: ожидается целочисленное выражение
При проверке возвращаемого значения в: check_firewall () выводится:Состояние брандмауэра: ● firewalld.service Загружен: замаскирован (/ dev / null) Активен: неактивен (мертв)
Почему первая функция предположительно возвращает значение «1», но во второй функции она возвращает возвращаемое значение каквывод команды: systemctl status firewalld