Как я могу изменить запись этого сценария bash в файл состояния?Linux

Ответить
Anonymous
 Как я могу изменить запись этого сценария bash в файл состояния?

Сообщение Anonymous »

Код: Выделить всё

!/bin/bash
CONTAINERS=("02252a5761d8" "2ebcc82e729" "dee36183e5aa")
LOG_FILE="/var/log/container_monitor.log"
STATE_FILE="/var/run/container_monitor.state"
update_state() {
local CONTAINER=$1
local STATE=$2
echo "$CONTAINER:$STATE" > $STATE_FILE
}
get_state() {
local CONTAINER=$1
if [ -f "$STATE_FILE" ]; then
grep "^$CONTAINER:" "$STATE_FILE" | cut -d':' -f2
else
echo "UNKNOWN"
fi
}
check_container() {
local CONTAINER=$1
local RUNNING=$(podman inspect --format="{{ .State.Running }}" $CONTAINER 2> /dev/null)
if [ $? -eq 1 ]; then
echo "$(date '+%Y-%m-%d %H:%M:%S') - UNKNOWN - $CONTAINER does not exist." >> $LOG_FILE
update_state "$CONTAINER" "UNKNOWN"
return 3
fi
local PREV_STATE=$(get_state "$CONTAINER")
if [ "$RUNNING" == "false" ]; then
echo "$(date '+%Y-%m-%d %H:%M:%S') - CRITICAL - $CONTAINER is not running." >> $LOG_FILE
update_state "$CONTAINER" "CRITICAL"
return 2
elif [ "$PREV_STATE" == "CRITICAL" ]; then
local STARTED=$(podman inspect --format="{{ .State.StartedAt }}" $CONTAINER)
echo "$(date '+%Y-%m-%d %H:%M:%S') - RECOVERED - $CONTAINER is back online. Started at: $STARTED" >> $LOG_FILE
update_state "$CONTAINER" "RUNNING"
else
update_state "$CONTAINER" "RUNNING"
fi
return 0
}
check_all_containers() {
local EXIT_CODE=0
for CONTAINER in "${CONTAINERS[@]}"
do
check_container $CONTAINER
local CURRENT_EXIT=$?
if [ $CURRENT_EXIT -gt $EXIT_CODE ]; then
EXIT_CODE=$CURRENT_EXIT
fi
done
return $EXIT_CODE
}
check_all_containers
Я пытаюсь создать сценарий bash для мониторинга контейнеров podman. Я использую файл журнала для проверки работы кода. Я хочу, чтобы этот код записывал (для каждого выполнения кода) состояние каждого контейнера, добавленного в массив, для записи в /var/run/container_monitor.state", но я получил только один контейнер, упомянутый в выводе:

Код: Выделить всё

akiae@DESKTOP-50SB6O3:~$ cat /var/run/container_monitor.state
dee36183e5aa:CRITICAL
Как я могу это изменить и улучшить код?
с помощью echo "$CONTAINER:$STATE" >> $STATE_FILE просто создайте еще один "журнал" файл"

Подробнее здесь: https://stackoverflow.com/questions/791 ... state-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»