【shell要求】
写一个shell脚本,能够实现一键安装并配置samba服务,执行该脚本是需要带一个路劲 /opt/samba.sh , 如/opt/samba目录若不存在,则自动创建。
要求,任何人都可以访问,并且不需要密码,只能读
【shell分析】
1.需要判断用户输入的目录是不是绝对路径,即是否以“/”开头
2.脚本需要判断samba服务是否已经安装,若已经安装就需要执行yum -y install samba 了
3.配置文件可以使用sed -i 也可以使用cat >> $dirconf << EOF
[root@localhost opt]# vi ./smb2.sh
#!/bin/bash
yum -y install smb > /dev/null && echo “正在安装”|| echo “已经安装无需重新安装”
// 安装一个smb 服务 并且把交互信息输出到黑洞 ,如果能正常执行输出 正在安装或者安装成功无需重新安装
echo $2 |grep "^/.*" //输出位置2的参数过滤出以/号键开头的所有信息
if [ $? = 0 ] //用$?号返回值0和非0来判断是否正确
then
echo " 输入格式正确"
else
echo "文件路径错误,要求绝对路径"
exit //如果格式错误,直接退出不在往下执行
fi
if [ -d $2 ];then //判断/opt/samba是否是目录,因为在系统的本身是没有这个目录的
echo "目录已经存在"
else //否则
mkdir /opt/samba ///创建一个samba的目录
fi
sed -i '/\[global\]/a\\tmap to guest '=' bad user' /etc/samba/smb.conf // sed -i 是直接修改目标文本文件 ,“/ /”表示包含,“\”表示转义字符,“=”号在有些场合有特殊的行业用’ ’用上引号括起来就是去掉特殊含义,只是等于字符本身的意思 (可以看下图一,是执行完后的效果)
echo -e "[$1]\n\tcomment = Samba\n\tpath = $2\n\tpublic = yes\n\twritable = yes" >> /etc/samba/smb.conf // echo -e 是输出转义字符的意思,$1指的是组的名字,\n表示换行,\t是表示横向制表符(top键)这些特殊行业的符号都是必须要用echo -e输出
systemctl start smb && echo "共享开启成功" || echo>“共享开启失败”
chmod =rx $2 // 给其他人访问肯定是要给其权限的,因为点开目录需要有执行的权限,所以必须要有读(r)执行(x)的权限才行
[root@localhost opt]# chmod +x smb2.sh //给文本一个执行的权限
[root@localhost opt]# ./smb2.sh jkg /opt/samba //开始执行该文本 (请看图三返回信息)
那我们操作好之后看一下效果,点开真机左下角搜索,输入虚拟机的ip
回车
红色箭头处执行文本时创建的一个目录