Итак, представим, что нам необходимо написать простенький 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. Получаем переменные из конфигурационного файла»
Оставить комментарий