Bash добавить запись в fstab по сценарию

Я новичок в скриптах bash, и я пытаюсь написать скрипт, который добавляет запись для общего доступа к файлам cifs в fstab. Я написал небольшой сценарий, но я не уверен, что он будет работать нормально. У меня нет linux для тестирования. Можете ли вы помочь мне улучшить или исправить это? он будет работать на Debian 7/8 и дистрибутиве Ubuntu 12.04

вот мой код:

    #!/bin/bash

    cp -p /etc/fstab /etc/fstab.back-$(date +%F)

    dir_src=//fileserver/share
    dir_tgt=/mount/share
    fsoptions="cifs _netdev,users,rw,auto,users,credentials=/etc/.cifspasswd,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0"

    mkdir -p $dir_tgt
    chown -R `whoami`  $dir_tgt

    echo -e "$dir_src \t\t $dir_tgt \t\t $fsoptions" >> /etc/fstab

    printf "put your windows login: \n"
    read login
    echo -e "username=$login" >> /etc/.cifspasswd
    printf "\n"
    printf "Now put your windows password: \n"
    read password
    echo "password=$password" >> /etc/.cifspasswd
    echo "domain=dom.local" >> /etc/.cifspasswd

    mount -a >> /tmp/mount.log

if [ $? -ne 0]
then 

cat /tmp/mount.log | mail -s " $hostname $username fstab return " -a "FROM:$username@mycompany.com" it@mycompany.com

else

echo " all work fine " | mail -s " fstab ok " -a "FROM:$username@mycompany.com" it@mycompany.com


fi

Спасибо за помощь

1 ответ

Ваш сценарий не идемпотент. То есть, если вы запустите его во второй раз, это серьезно сломает вещи.

Этот тип вещей лучше подходит для инструментов управления конфигурациями, таких как puppet/chef/etc. Подобные операции вы выполняете через интерфейс, который гарантирует вам идемпотентность.

Ваш скрипт в основном не проверяет ошибки. Что произойдет, если FS только для чтения, а что если FS заполнен? Человек, вызывающий скрипт, запускал его как root или забыл и запустил его как непривилегированный пользователь?

Чтобы добиться этого, вы могли бы включить в свой сценарий множество проверок на наличие ошибок, но в какой-то момент вы просто дублируете логику, которую получаете от хорошего инструмента управления конфигурацией.

Если это не ясно, я настоятельно думаю, что вы должны выполнять этот тип задач с помощью инструмента управления конфигурацией.

Другие вопросы по тегам