一键安装samba服务,任何人都能访问,目录为只读
- 【shell要求】
写一个shell脚本,能够实现一键安装并配置samba服务,执行该脚本时需要带一个共享的路径,它是共享的目录,目录若存在,需自动创建samba。
要求,任何人都可以访问,并且不需要密码,并且是只读的。
-
【shell分析】
1、需要判断的用户给出的是目录是不是绝对路径,即是否以‘/’开头
2、脚本需要判断samba服务是否已经安装,若已经安装了就不需要执行yum -y install samba 了
3、配置文件可以使用sed -i
4、samba配置可以参考http://www/apelearn.com/study_v2/chapter24.html#id1
其中在centos7上的新samba配置稍微有点差异,本题要求的任何人都可以访问,不需要修改security这一项目,保持默认即可。 -
【shell配置】
#!/bin/bash if [ "$#" -ne 1 ] ####判断位置变量的个数 是否为 1 then echo "运行脚本格式为:$0 /dir/" ####是的话,则输出“运行脚本格式为:$0 /dir/” exit 1 ####返回一层继续判定 else if ! echo $1 |grep -q '^/.*' ####判定 输出的$1位置上的格式是否是绝对路径 then echo "请提供一个绝对路径。" ####是的话则输出"请提供一个绝对路径。" exit 0 ####返回 fi fi if ! rpm -q samba >/dev/null ####判定samba服务是否安装,反馈的数据信息导入/dev/null then echo "将要安装samba" ####已安装,则输出 "将要安装samba" sleep 1 ####睡眠一秒先执行下面命令 yum -y install samba ####yum安装 if [ $? -ne 0 ] ####判断不等于0 then echo "samba 安装失败" ####则输出"samba 安装失败" exit 1 fi fi dirconf="/etc/samba/smb.conf" ####samba配置文件修改追加 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 ####开启samba服务 if [ $? -ne 0 ] ####判断开启成功开启服务 then echo "samba服务启动失败,请检查配置文件是否正常" else echo "samba服务启动正常" fi
-
【shell测试】
chmod +x /opt/samba.sh ###设置权限
/opt/samba.sh /opt/samba/ ###执行脚本