Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.
Модераторы: SLEDopit , Модераторы разделов
headcrab
Сообщения: 175
ОС: Windows 7
Сообщение
headcrab » 13.02.2010 22:27
Здравствуйте))
Возникла необходимость автоматического монтирования NFS шар на одном из серверов и переодическая проверка по крону не отвалилась/неотмонтировалась ли одна из них и раз уж это бесстыдство по каким-то причинам произошло - примонтировать куда положено...
Для этих целей было решено написать скрипт. В файле mounts.list храним в каждой строке пару из "каталога на удаленной машине" и "локальной точки монтирования" разделенных табуляцией (чтобы потом можно было при помощи awk читать все это дело столбцами).
Вобщем вот код:
Код: Выделить всё
#!/bin/bash
NFS_SERVER_ADDR="192.168.37.2"
if [ -x /etc/sh/mounts.list ]
for PATH_LIST in `cat /etc/sh/mounts.list` do
PATH_SRC=`echo $PATH_LIST | awk '{print $1}'`
PATH_DST=`echo $PATH_LIST | awk '{print $2}'`
df $PATH_DST > /dev/null
case $? in
0)
;;
1)
mount "$NFS_SERVER_ADDR:/$PATH_SRC $PATH_DST"
echo "Mounting $PATH_SRC -> $PATH_DST\n"
;;
*)
;;
esac
done
fi
exit 0
При исполнении сценария в консоль выводится:
Код: Выделить всё
root@www:/etc/sh# ./mounts.sh
./mounts.sh: line 9: syntax error near unexpected token `PATH_SRC=`echo $PATH_LIST | awk '{print $1}'`'
./mounts.sh: line 9: ` PATH_SRC=`echo $PATH_LIST | awk '{print $1}'`'
Подскажите плиз в чем проблема? Вроде в строчках на которые ругаются все правильно >_>
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Сообщение
sash-kan » 13.02.2010 22:35
с обратными кавычками, возможно проблема. в тэге code этого не видно.
раз уж в shebang-е поставили /bin/bash, можете смело заменить пару обратных кавычек на $(...).
и нагляднее и удобнее будет.
headcrab
Сообщения: 175
ОС: Windows 7
Сообщение
headcrab » 13.02.2010 22:38
Заменил на:
Код: Выделить всё
...
PATH_SRC=$(echo $PATH_LIST | awk '{print $1}')
PATH_DST=$(echo $PATH_LIST | awk '{print $2}')
...
Ничего не изменилось
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo
Сообщение
Ленивая Бестолочь » 13.02.2010 22:42
перед do поставьте ;
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
headcrab
Сообщения: 175
ОС: Windows 7
Сообщение
headcrab » 13.02.2010 22:50
Ммм... попутно исправил часть ошибок в синтаксисе... )))
Код: Выделить всё
#!/bin/bash
NFS_SERVER_ADDR="192.168.37.2"
if [ -x /etc/sh/mounts.list ]
then
for PATH_LIST in `cat /etc/sh/mounts.list`
do
PATH_SRC=$(echo $PATH_LIST | awk '{print $1}')
PATH_DST=$(echo $PATH_LIST | awk '{print $2}')
df $PATH_DST > /dev/null
case $? in
0)
;;
1)
mount "$NFS_SERVER_ADDR:$PATH_SRC $PATH_DST"
echo "Mounting $PATH_SRC -> $PATH_DST\n"
;;
*)
;;
esac
done
fi
exit 0
Теперь не спотыкается, отрабатывает и все.. ничего не монтируя.. пытаюсь разобраться в чем может быть дело))
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian
Сообщение
rm_ » 14.02.2010 00:16
А прописать всё в fstab и время от времени делать mount -a - не вариант?
headcrab
Сообщения: 175
ОС: Windows 7
Сообщение
headcrab » 14.02.2010 00:23
Очень даже вариант
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Сообщение
sash-kan » 14.02.2010 01:23
headcrab писал(а): ↑ 13.02.2010 22:27
и раз уж это бесстыдство по каким-то причинам произошло
и что, действительно происходит? не говорит ли это о каких-то проблемах?