使用 shell 脚本一键安装 Samba

使用 shell 脚本一键安装 Samba


1 配置本地 yum 源

1.1 删除原有的 repo 文件

[root@samba_shell_install ~]$ cd /etc/yum.repos.d/
[root@samba_shell_install yum.repos.d]$ rm -rf ./*

1.2 编写新的 repo 文件

[root@samba_shell_install yum.repos.d]$ vi yum.repo
[AppStream]
name=AppStream
baseurl=file:///mnt
gpgcheck=0
enabled=1

1.3 挂载光盘并设置永久挂载

[root@samba_shell_install yum.repos.d]$ mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@samba_shell_install yum.repos.d]$ vi /etc/fstab 
/dev/cdrom		/mnt		iso9660		default		0		0
[root@samba_shell_install yum.repos.d]$ mount -a

1.4 验证本地 yum 源是否可用

[root@samba_shell_install yum.repos.d]$ yum makecache
已加载插件:fastestmirror
Determining fastest mirrors
AppStream                                             | 3.6 kB  00:00:00     
(1/4): AppStream/group_gz                             | 153 kB  00:00:00     
(2/4): AppStream/primary_db                           | 6.1 MB  00:00:00     
(3/4): AppStream/filelists_db                         | 7.2 MB  00:00:00     
(4/4): AppStream/other_db                             | 2.6 MB  00:00:00     
元数据缓存已建立
[root@samba_shell_install yum.repos.d]$ yum -y install vim net-tools bash-completion

2 编写 shell 脚本

2.1 编写shell脚本安装samba服务

[root@samba_shell_install ~]$ vim install_samba.sh
#!/bin/bash  
if [ "$#" -ne 1 ]; then	#检查传递给脚本的参数数量($#)是否不等于(-ne)1。如果参数数量不是1,则执行then后面的代码块
    echo "脚本运行路径为: $0 /dir/"	#在参数数量不是1的情况下,输出一个错误消息,说明脚本需要一个参数(即共享目录的路径),并且该参数应该跟在脚本名称($0)后面。
    exit 1	#如果参数数量不正确,则退出脚本,并返回一个非零的退出状态码
else
    dir="$1"	#将传递给脚本的第一个参数($1)赋值给变量dir
    if ! [[ "$dir" =~ ^/ ]]; then	#检查dir变量是否以根目录开头。如果不以根目录开头(即不是一个绝对路径),则执行then后面的代码块
        echo "请提供一个绝对路径:"	#如果dir不是绝对路径,则输出一个错误消息,要求用户提供一个绝对路径
        exit 1
    fi
    if ! rpm -q samba >/dev/null; then	#使用rpm命令查询是否已安装samba软件包。>/dev/null将输出重定向到空设备,即不显示任何输出。如果samba没有安装(rpm -q samba返回非零状态码),则执行then后面的代码块
        echo "开始安装samba服务"	#如果samba没有安装,则输出一个消息说明开始安装
        sleep 2	#暂停脚本执行2秒钟,可能是为了让用户看到前面的消息
        yum -y install samba	#使用yum命令自动安装samba软件包
        if [ $? -ne 0 ]; then	#检查上一条命令执行后的返回状态($?)是否不等于(-ne)0,如果不等于0,则执行then后面的代码块
            echo "服务未正确安装"	#如果yum命令执行失败则输出一个错误消息,告知用户安装失败
            exit 1  
        fi  
    fi  
    dirconf="/etc/samba/smb.conf"	#将smb.conf文件的路径赋值给变量dirconf,这个文件是Samba的主要配置文件
    cat >> "$dirconf" <<EOF	#使用cat命令将由<<EOF开始和EOF结束的部分的内容追加到smb.conf文件的末尾,定义了一个新的Samba共享
[share]	#这是共享的名称。在Windows的网络浏览器中,会看到这个名称作为共享文件夹的名称
    comment = share all	#这是关于此共享的描述或注释。当用户在网络浏览器中查看此共享时,会看到这个描述
    path = $dir	#将目录($dir)作为共享文件夹的实际路径
    browseable = yes	#表明此共享可以在网络浏览器中被浏览。如果设置为 no,则用户需要知道确切的共享名称才能访问它
    public = yes	#表明此共享是公共的,不需要用户名和密码即可访问
    writable = no	#表明此共享是只读的,用户不能在此共享上写入或修改文件。如果设置为 yes,则用户可以在此共享上创建、修改和删除文件
EOF
    if [ ! -d "$dir" ]; then	#检查目录($dir)是否存在,如果不存在,则执行then后面的代码块
        mkdir -p "$dir"	#创建目录($dir)
    fi  
    chmod 777 "$dir"	#将目录($dir)赋予可读、可写、可执行权限(777)
    chown nobody:nobody "$dir"	#设置目录($dir)的主、组均为nobody
    echo "test" > "$dir/test.txt"	#在共享目录中创建一个名为test.txt的文件,并写入内容“test”
    systemctl start smb	#使用systemctl命令启动Samba服务
    if [ $? -ne 0 ]; then	#检查上一条命令返回值($?)是否不等于0,如果不等于0,则执行then后面的代码块
        echo "服务启动失败。请检查配置文件"	#samba服务重启失败,告知用户
    else  
        echo "samba 配置完毕,请验证"	#samba服务重启成功,告知用户配置完成
    fi  
fi
[root@samba_shell_install ~]$ chmod 777 install_samba.sh 
[root@samba_shell_install ~]$ ./install_samba.sh /share

2.2 添加samba用户并设置密码

[root@samba_shell_install ~]$ useradd sambauser
[root@samba_shell_install ~]$ smbpasswd -a sambauser
New SMB password:
Retype new SMB password:
Added user sambauser.

2.3 将用户添加到samba数据库中

[root@samba_shell_install ~]$ pdbedit -a -u sambauser
new password:
retype new password:
Unix username:        sambauser
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-1048911917-1102794934-2356885306-1000
Primary Group SID:    S-1-5-21-1048911917-1102794934-2356885306-513
Full Name:            
Home Directory:       \\samba_shell_install\sambauser
HomeDir Drive:        
Logon Script:         
Profile Path:         \\samba_shell_install\sambauser\profile
Domain:               SAMBA_SHELL_INSTALL
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          三, 06 22036 23:06:39 CST
Kickoff time:         三, 06 22036 23:06:39 CST
Password last set:    五, 14 62024 17:40:52 CST
Password can change:  五, 14 62024 17:40:52 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@samba_shell_install ~]$ pdbedit -L
sambauser:1001:

3 验证

3.1 在物理机中使用 win+R 调出运行窗口,按照图片输入samba服务器ip地址和共享文件夹名

在这里插入图片描述
在这里插入图片描述

文件夹、文档均可查看

在这里插入图片描述

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值