shell实验——一键安装并配置samba服务

目录

  • 一、shell要求
  • 二、shell分析
  • 三、实验步骤
  • 四、实验测试
  • 五、shell解析
    • 5.1 注意
    • 5.2
    • 5.3
    • 5.4
    • 5.5
    • 5.6

一、shell要求

  • 写一个shell脚本,能够实现一键安装并配置samba服务,执行该脚本时需要带一个共享的路径
  • 它是共享的目录,目录若存在,需自动创建samba
  • 任何人都可以访问,并且不需要密码,并且是只读的

二、shell分析

  • 需要判断的用户给出的是目录是不是绝对路径,即是否以‘/’开头
  • 脚本需要判断samba服务是否已经安装,若已经安装了就不需要执行yum -y install samba 了
  • 配置文件可以使用sed -i
  • samba配置可以参考
    http://www/apelearn.com/study_v2/chapter24.html#id1
  • 其中在centos7上的新samba配置稍微有点差异,本题要求的任何人都可以访问,不需要修改
  • security这一项目,保持默认即可。

三、实验步骤

vi /opt/samba.sh

#!/bin/bash
if [ "$#" -ne 1 ]
then
   echo "运行脚本格式为:$0 /dir/"
exit 1
else
   if ! echo $1 |grep -q '^/.*'
   then
        echo "请提供一个绝对路径。"
        exit 0
   fi
fi

if ! rpm -q samba >/dev/null
then
   echo "将要安装samba"
   sleep 1
   yum -y install samba
   if [ $? -ne 0 ]
   then
      echo "samba 安装失败"
      exit 1
   fi
fi

dirconf="/etc/samba/smb.conf"
cat >> $dirconf << EOF
[global]
        workgroup = workgroup
        security = user
        map to guest = bad user
[share]
        comment= share all
        path = $1
        browseable = yes
        public = yes
        writable = no
EOF

if [ ! -d $1 ]
then
   mkdir -p $1
fi

chmod 777 $1
chown nobody:nobody $1
echo "www.51xit.top" > $1/51xit.txt

systemctl start smb
if [ $? -ne 0 ]
then
   echo "samba服务启动失败,请检查配置文件是否正常"
else
   echo "samba服务启动正常"
fi


chmod +x /opt/samba.sh

四、实验测试

/opt/samba.sh  /opt/samba/

###系统为Centos 7  操作系统  ###
systemctl start smb
if [ $? -ne 0 ]
then
   echo "samba服务启动失败,请检查配置文件是否正常"
else
   echo "samba服务启动正常"
fi

五、shell解析

5.1 注意

if [ $# -ne 1 ];then 
  • 这段命令是用于判断参数的个数是否为1,不是则进行then的逻辑处理,其中$#表示参数个数,-ne是不等于
  • 判断参数个数
if [ $# -ne 1 ];then
    echo "参数个数不为1"
    exit
else
    echo "参数个数为1"
fi
  • ./samba.sh /opt ###表示1个参数
  • ./samba.sh ###表示没参数
  • ./samba.sh /opt /mnt ###表示多个参数

5.2

判断用户输入的参数是不是以‘/’开头,因为绝对路径是以‘/’开头,如果不是绝对路径,后面针对该路劲不好操作

5.3

判断是否安装过samba包,rpm -q samba 命令执行后,如果是没安装,则会提示未安装,返回值为非0值,
用着个作为判断条件就可以了。

5.4

如果没安装,则用yum安装samba,判断返回值是否为0,如果不能正常安装samba包应该退出脚本

5.5

用cat >> $dirconf << EOF 将配置追加到配置文件里面

5.6

在Centos 7 s上启动服务命令为systemctl start smb 在Centos6 上启动是/etc/init.d/smb start

你可能感兴趣的:(shell脚本,shell)