LINUX.ORG.RU

История изменений

Исправление fargred, (текущая версия) :

Много ненужной обвязки. Вместо

if [ -d $Mountpoint ]
	then
		echo "Mountpoint already exists!"
	else
		echo "Creating mountpoint..."
		mkdir $Mountpoint
fi
я бы предложил
[ -d "$mountpoint" ] || { mkdir -pv "$mountpoint" || exit 1; }
Работа программы должна идти молча, если она делает то, что от неё ожидается, и о чём пользователю каждый раз помнить необязательно.

Зачем sleep? А это на чемодане через Китай

mount | grep "$NAS"
if [ "$?" -eq $Success ]
	then
		echo "NAS server already mounted"
	else
		echo "Mount external storage..."
		mount.cifs  $NAS $Mountpoint -o username=login,password=pass
fi
Что мешает сделать просто
cat /proc/mounts | grep "$NAS" || { mount -v … || exit 2; }
// выхлоп mount’ом без ключей списка примонтированных ФС оставлили только из соображений совместимости, по-хорошему этот список надо брать из /proc/mounts. И да, если уж сравниваешь результат $?, то делать это нужно (в данном случае – именно нужно) проще –
[ $? -eq 0 ]
$? – это число всегда, это встроенная в баш переменная, тип которой заранее определён. Кроме того, оператор -eq сравнивает только числа, а Success свой ты задал как строку – ноль ведь в кавычках.

wait

Ты ещё не форкал rsync и не юзал COPROC, чтобы у тебя появились какие-то асинхронные с текущим потоком процессы.

rmdir $Mountpoint

Нафига её удалять? Вот так

echo "Error code "$?", rSynchronization from $(uname -n) to NAS failed, $(date) "
никто не экранирует. Если ты хотел экранировать $?, но она как раз оказалась вне кавычек. Тем не менее, они ей и ненужны, можно было просто вставить переменную в текст как есть, i.e. «какой-то текст $? текст идёт дальше».

rSynchronization

Что это?

rSync

Программа называется rsync http://rsync.samba.org/

rSync from $(uname -n) to NAS failed

Как rsync мог провалить синхронизацию, если он даже не был запущен?!

# предполагается запуск скрипта с перенаправлением вывода в лог файл

Тогда там в начале должно быть что-то типа

exec &>$log
Как монтировать CIFS выше уже рассказали вроде.

Минутка брюзжания.

Start time - $(date)

Или тире или двоеточие, но никак не дефис.

Synchronizating

Ну ё-моё! Глагол в инфинитиве – to synchronize, значит, длительное – synchronizing, не надо ничего вымудрять, не знаешь английский – пиши по-русски и оставляй мыло для саппорта.

«NAS server already mounted»
«Umounting NAS server...»
«Mountpoint already exists!»
«Synchronization completed at $(date)»

Почему у тебя знаки препинания в конце предложения появляются через раз?

Исходная версия Deleted, :

Много ненужной обвязки. Вместо

if [ -d $Mountpoint ]
	then
		echo "Mountpoint already exists!"
	else
		echo "Creating mountpoint..."
		mkdir $Mountpoint
fi
я бы предложил
[ -d "$mountpoint" ] || { mkdir -pv "$mountpoint" || exit 1; }
Работа программы должна идти молча, если она делает то, что от неё ожидается, и о чём пользователю каждый раз помнить необязательно.

Зачем sleep? А это на чемодане через Китай

mount | grep "$NAS"
if [ "$?" -eq $Success ]
	then
		echo "NAS server already mounted"
	else
		echo "Mount external storage..."
		mount.cifs  $NAS $Mountpoint -o username=login,password=pass
fi
Что мешает сделать просто
cat /proc/mounts | grep "$NAS" || { mount -v … || exit 2; }
// выхлоп mount’ом без ключей списка примонтированных ФС оставлили только из соображений совместимости, по-хорошему этот список надо брать из /proc/mounts. И да, если уж сравниваешь результат $?, то делать это нужно (в данном случае – именно нужно) проще –
[ $? -eq 0 ]
$? – это число всегда, это встроенная в баш переменная, тип которой заранее определён. Кроме того, оператор -eq сравнивает только числа, а Success свой ты задал как строку – ноль ведь в кавычках.

wait

Ты ещё не форкал rsync и не юзал COPROC, чтобы у тебя появились какие-то асинхронные с текущим потоком процессы.

rmdir $Mountpoint

Нафига её удалять? Вот так

echo "Error code "$?", rSynchronization from $(uname -n) to NAS failed, $(date) "
никто не экранирует. Если ты хотел экранировать $?, но она как раз оказалась вне кавычек. Тем не менее, они ей и ненужны, можно было просто вставить переменную в текст как есть, i.e. «какой-то текст $? текст идёт дальше».

rSynchronization

Что это?

rSync

Программа называется rsync http://rsync.samba.org/

rSync from $(uname -n) to NAS failed

Как rsync мог провалить синхронизацию, если он даже не был запущен?!

# предполагается запуск скрипта с перенаправлением вывода в лог файл

Тогда там в начале должно быть что-то типа

exec &>$log
Как монтировать CIFS выше уже рассказали вроде.

Минутка брюзжания.

Start time - $(date)

Или тире или двоеточие, но никак не дефис.

Synchronizating

Ну ё-моё! Глагол в инфинитиве – to synchronize, значит, в третьем лице – synchronizing, не надо ничего вымудрять, не знаешь английский – пиши по-русски и оставляй мыло для саппорта.

«NAS server already mounted»
«Umounting NAS server...»
«Mountpoint already exists!»
«Synchronization completed at $(date)»

Почему у тебя знаки препинания в конце предложения появляются через раз?