Скрипт добавления Cron-заданий из файла

Цель данного скрипта — легко, при помощи одной команды переносить задания для Cron, описанные в файле cron.cfg непосредственно в конфигурацию crontab. Данный скрипт является частью системы для автоматической конфигурации сервера.

Основные этапы:

  1. Определяем путь до cron.cfg
  2. Считываем текущие задания crontab
  3. Считываем содержимое файла cron.cfg. Пустые и #закомментированые строки пропускаем
  4. Проверяем, существует ли уже строка из cron.cfg в crontab
  5. Если строки нет в crontab, она добавляется туда

Полный код скрипта приведен ниже:

Bash
#!/bin/bash

CRON_LIST=/data/$SRV_START_DIR/config/cron.cfg

trap 'echo -e "\033[31mcrom-list.sh: Something went wrong\033[0m"; exit 1' ERR
set -e

export DEBIAN_FRONTEND=noninteractive

echo "Checking for the presence of the cron.cfg file..."
if [ ! -f $CRON_LIST ]; then
  echo "cron.cfg file not found!"
  exit 1
fi

echo "Reading current crontab jobs into a variable..."
current_crontab=$(crontab -l 2>/dev/null || true)

echo "Iterate through the lines of the cron.list file..."
while IFS= read -r line; do
  # Skip blank lines and comments
  if [[ -z "$line" || "$line" == \#* ]]; then
    continue
  fi

  echo "Checking if a job exists in the current crontab..."
  if echo "$current_crontab" | grep -Fq "$line"; then
    echo "The task already exists: $line"
  else
    echo "Adding a job to crontab..."
    (crontab -l 2>/dev/null || true; echo "$line") | crontab -
    echo "Task added: $line"
  fi
done < "$CRON_LIST"

trap - ERR
echo "Cron jobs from $CRON_LIST added successfully"


Данный скрипт является частью нашего репозитория utils.



Если вам интересен наш проект, есть вопросы, замечания, или предложения — оставляйте комментарии или пишите на почту: checkerwars@mail.ru

Кроме того, автор проекта ищет работу. Мое резюме.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *