Shell scripting. Получаем переменные из конфигурационного файла

Итак, представим, что нам необходимо написать простенький shell-скрипт, который, например, копирует директорию с одного удалённого сервера на другой при помощи команды rsync.

Для rsync‘а необходимы следующие параметры:

  • имя пользователя удалённого сервера, с которго мы собираемся копировать
  • адрес сервера, с которго мы собираемся копировать
  • путь до директории, которую мы будем копировать
  • имя пользователя другого удалёного сервера, на который мы собираемся копировать
  • адрес сервера, на который мы собираемся копировать
  • путь, куда мы будем копировать

Следовательно, наш конфигурационный файл, назовём его .myrsync, будет выглядеть следующим образом:

# Configure options for myrsync
SRC_USER = jsmith
SRC_HOST = example.com
SRC_PATH = /home/jsmith/data
DEST_USER = admin
DEST_HOST = dummy.org
DEST_PATH = /tmp

Теперь приступим непосредствено к написанию самого скрипта, который будет брать параметры из конфигурационного файла и выполнять команду rsync. Итак, получаем параметры:

if [ -f "/etc/myrsync" ]; then
        for var in `awk 'BEGIN {FS="[= ]"} /^[^#]+/ \
        { print $1 "=" $(NF) }' /etc/myrsync`; do
                eval $var
        done
elif [ -f "$HOME/.myrsync" ]; then
        for var in `awk 'BEGIN {FS="[= ]"} /^[^#]+/ \
        { print $1 "=" $(NF) }' $HOME/.myrsync`; do
                eval $var
        done
fi

Как видно из куска кода, скрипт сначала пытается прочитать настройки из файла /etc/myrsync, а после этого пытается читать настройки из файла .myrsync, хранящегося в домашней директории пользователя, который запускает скрипт. Таким образом, параметры определённые в общем настроечном файле переопределяются пользовательским файлом настроек.

И теперь непосредственно копирование:

rsync -avzh --stats --progress \
$SRC_USER@$SRC_HOST:$SRC_PATH \
$DEST_USER@$DEST_HOST:$DEST_PATH

После этого нам остаётся лишь сохранить файл как myrsync.sh, установить у него права на запуск:

chmod +x myrsync.sh

0 комментариев к записи «Shell scripting. Получаем переменные из конфигурационного файла»


  1. Нет комментариев

Оставить комментарий