Bash 通过脚本向 fstab 添加条目

Bash 通过脚本向 fstab 添加条目

我是 Bash 脚本的新手,我尝试编写脚本,将 cifs windows 共享条目添加到 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:[email protected]" [email protected]

else

echo " all work fine " | mail -s " fstab ok " -a "FROM:[email protected]" [email protected]


fi

感谢您的帮助

答案1

您的脚本不是幂等的。也就是说,如果您再次运行它,它会严重破坏一切。

这种事情用 puppet/chef/etc 等配置管理工具处理会更好。你通过一个可以保证幂等性的接口来执行这样的操作。

您的脚本基本上没有错误检查。如果 FS 是只读的,会发生什么?如果 FS 已满,会发生什么?调用脚本的人是否以 root 身份运行它,或者忘记并以非特权用户身份运行它?

您可以在脚本中加入大量的错误检查来实现这一点,但在某些时候,您只是重复了从好的配置管理工具中获得的逻辑。

如果不清楚的话,我强烈建议您应该使用配置管理工具来执行此类任务。

相关内容