Linux系统利用bash脚本设置Samba服务器管理功能

[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!

这个Samba管理工具脚本提供了全面的 Samba服务器管理功能,主要包括以下几个核心模块:

1、权限管理:自动检测并以 root 权限运行,确保所有管理操作具备足够权限

2、用户管理功能:
系统用户管理:支持添加非登录系统用户、删除用户及修改用户密码
Samba 用户管理:可将已有系统用户添加为 Samba 用户,支持删除 Samba 用户和修改其密码
智能显示用户列表:自动过滤系统内置用户,只显示有效用户

3、共享设置功能:
向导式创建新共享:引导用户设置共享名、描述、路径、访问权限等
支持细粒度权限控制:可指定有效访问用户、可写用户,以及游客访问权限
自动创建共享目录并设置合适权限
提供配置确认步骤,支持中途取消操作
支持手动编辑 smb.conf 配置文件

4、服务管理功能:
基础服务控制:启动、停止、重启 Samba 服务
配置重载:不中断服务的情况下重新加载配置
开机自启管理:设置或禁用 Samba 服务开机自动启动
服务状态查看:显示 Samba 服务当前运行状态及详细信息

5、辅助功能:
配置文件自动备份:修改配置前自动创建带时间戳的备份
操作指引:清晰的菜单导航和输入提示
错误处理:提供明确的错误提示和操作建议
随机激励语句:增加用户体验的友好设计

bash脚本20250818下载地址

隐藏内容,回复可见“马上回复”后“刷新页面”即可查看隐藏内容!
(温馨提示:发表评论请勾选 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。

正确食用方式:直接保存下面bash脚本,给予权限直接运行即可!

#!/bin/bash
 
# 颜色定义 - 移除了黄色,增加了亮红色用于菜单
RED='\033[0;31m'
LIGHT_RED='\033[1;31m'  # 亮红色用于菜单选项
GREEN='\033[0;32m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # 无颜色
 
# 自动以root权限重新运行脚本
if [ "$(id -u)" -ne 0 ]; then
    echo
    echo -e "${BLUE}================ Samba 管理工具 ==================${NC}"
    echo -e "${LIGHT_RED}一. 系统用户管理${NC}"
    echo -e "${LIGHT_RED}二. Samba用户管理${NC}"
    echo -e "${LIGHT_RED}三. Samba共享设置${NC}"
    echo -e "${LIGHT_RED}四. Samba服务管理${NC}"
    echo -e "${LIGHT_RED}五. 退出脚本${NC}"
    echo -e "${BLUE}=========================================================${NC}"
    echo "需要root权限,请输入系统登录密码..."
    if command -v sudo &>/dev/null; then
        sudo "$0" "$@"
        exit $?
    elif command -v su &>/dev/null; then
        su -c "$0 $*"
        exit $?
    else
        echo -e "${RED}错误:无法获取root权限,请手动使用sudo或切换到root用户运行。${NC}" >&2
        exit 1
    fi
fi
 
# 定义激励语句数组
motivational_quotes=(
    "成功来自于日复一日的努力,而非一时的热情。"
    "今天的小步,明天的飞跃。"
    "相信自己,你比想象中更强大。"
    "困难是暂时的,坚持是永恒的。"
    "每一个专家都曾是初学者。"
    "行动是治愈恐惧的良药,犹豫会不断滋养恐惧。"
    "不要等待机会,而要创造机会。"
    "伟大的作品不是靠力量,而是靠坚持来完成的。"
    "你今天的选择,决定了你明天的样子。"
    "挑战自己,突破极限,你会发现全新的自己。"
    "【提示】samba用户首先要是系统用户by糖糖。"
)
 
# 随机选择一句激励语句
get_random_quote() {
    local index=$(( RANDOM % ${#motivational_quotes[@]} ))
    echo "${motivational_quotes[$index]}"
}
 
# 定义要排除的系统用户
EXCLUDED_USERS=$(cat << 'EOF' daemon bin sys sync games man lp mail news uucp proxy www-data backup list irc gnats nobody _apt messagebus systemd-timesync systemd-network systemd-resolve tcpdump syslog avahi-autoipd dnsmasq strongswan cups-pk-helper lightdm sshd xrdp avahi pulse saned hplip nvidia-persistenced sssd uuidd systemd-coredump EOF ) # 获取当前登录用户 CURRENT_USER=$(logname) CURRENT_GROUP=$(id -g -n "$CURRENT_USER") # 显示系统用户列表 show_system_users() { echo -n -e "${CYAN}系统用户列表: ${NC}" # 创建临时文件存储排除用户 EXCLUDE_FILE=$(mktemp) echo "$EXCLUDED_USERS" > "$EXCLUDE_FILE"
     
    # 创建临时文件存储所有系统用户
    ALL_USERS=$(mktemp)
    cut -d: -f1 /etc/passwd > "$ALL_USERS"
     
    # 使用comm命令找出不在排除列表中的用户
    users=$(comm -23 <(sort "$ALL_USERS") <(sort "$EXCLUDE_FILE") | tr '\n' ',' | sed -e 's/,$//' -e 's/,,/,/g') # 清理临时文件 rm "$EXCLUDE_FILE" "$ALL_USERS" # 显示结果 echo "$users" } # 显示Samba用户列表 show_samba_users() { echo -n -e "${CYAN}Samba用户列表: ${NC}" if command -v pdbedit &>/dev/null; then
        if pdbedit -L &>/dev/null; then
            local samba_users=$(pdbedit -L | cut -d: -f1 | tr '\n' ',' | sed 's/,$//')
            if [ -n "$samba_users" ]; then
                echo "$samba_users"
            else
                echo "无Samba用户"
            fi
        else
            echo "无Samba用户"
        fi
    else
        echo -e "${RED}未安装Samba用户管理工具(pdbedit)${NC}"
    fi
}
 
# 主菜单(使用小写数字)
main_menu() {
    clear
    # 显示随机激励语句
    echo -e "${GREEN}=========================================================${NC}"
    echo -e "${RED}【$(date +"%Y-%m-%d %H:%M:%S")】 ${NC}$(get_random_quote)"
    echo -e "${GREEN}=========================================================${NC}"
    echo
    echo -e "${BLUE}===================== Samba 管理工具 =====================${NC}"
    echo -e "${LIGHT_RED}一. 系统用户管理${NC}"
    echo -e "${LIGHT_RED}二. Samba用户管理${NC}"
    echo -e "${LIGHT_RED}三. Samba共享设置${NC}"
    echo -e "${LIGHT_RED}四. Samba服务管理${NC}"
    echo -e "${LIGHT_RED}五. 退出脚本${NC}"
    echo -e "${BLUE}=========================================================${NC}"
    read -p "请选择操作 [1-5]: " choice
    case $choice in
        1) system_user_menu ;;
        2) samba_user_menu ;;
        3) samba_share_menu ;;
        4) samba_service_menu ;;
        5) echo "感谢使用,退出脚本。"; exit 0 ;;
        *) echo -e "${RED}无效选择,请重试。${NC}"; sleep 2; main_menu ;;
    esac
}
 
# 系统用户管理子菜单(使用小写数字)
system_user_menu() {
    clear
    echo -e "${BLUE}===================== 系统用户管理 =======================${NC}"
    show_system_users
    echo
    show_samba_users
    echo -e "${BLUE}---------------------------------------------------------${NC}"
    echo -e "${LIGHT_RED}1. 增加系统用户${NC}"
    echo -e "${LIGHT_RED}2. 删除系统用户${NC}"
    echo -e "${LIGHT_RED}3. 修改用户密码${NC}"
    echo -e "${LIGHT_RED}4. 退出脚本${NC}"
    echo -e "${LIGHT_RED}5. 返回主菜单${NC}"
    echo -e "${BLUE}=========================================================${NC}"
    read -p "请选择操作 [1-5]: " choice
    case $choice in
        1) add_system_user ;;
        2) delete_system_user ;;
        3) modify_system_user_password ;;
        4) echo "感谢使用,退出脚本。"; exit 0 ;;
        5) main_menu ;;
        *) echo -e "${RED}无效选择,请重试。${NC}"; sleep 2; system_user_menu ;;
    esac
}
 
# 增加系统用户(默认创建非登录用户)
add_system_user() {
    echo "默认创建非登录用户"
    read -p "请输入要添加的用户名: " username
     
    if id "$username" &>/dev/null; then
        echo -e "${RED}错误: 用户 $username 已存在。${NC}"
        read -p "按任意键继续..."
        system_user_menu
        return
    fi
     
    # 创建非登录用户:使用-nologin shell,不创建家目录
    useradd -M -s /usr/sbin/nologin "$username"
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}非登录用户 $username 创建成功。${NC}"
        # 虽然是非登录用户,仍可设置密码(用于Samba验证)
        passwd "$username"
    else
        echo -e "${RED}创建用户 $username 失败。${NC}"
    fi
     
    read -p "按任意键返回系统用户管理菜单..."
    system_user_menu
}
 
# 删除系统用户
delete_system_user() {
    read -p "请输入要删除的用户名: " username
     
    if ! id "$username" &>/dev/null; then
        echo -e "${RED}错误: 用户 $username 不存在。${NC}"
        read -p "按任意键继续..."
        system_user_menu
        return
    fi
     
    read -p "确定要删除用户 $username 吗? [y/N] " confirm
    if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
        userdel -r "$username"
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}用户 $username 已成功删除。${NC}"
        else
            echo -e "${RED}删除用户 $username 失败。${NC}"
        fi
    else
        echo "已取消删除操作。"
    fi
     
    read -p "按任意键返回系统用户管理菜单..."
    system_user_menu
}
 
# 修改系统用户密码
modify_system_user_password() {
    read -p "请输入要修改密码的用户名: " username
     
    if ! id "$username" &>/dev/null; then
        echo -e "${RED}错误: 用户 $username 不存在。${NC}"
        read -p "按任意键继续..."
        system_user_menu
        return
    fi
     
    passwd "$username"
     
    read -p "按任意键返回系统用户管理菜单..."
    system_user_menu
}
 
# Samba用户管理子菜单(使用小写数字)
samba_user_menu() {
    clear
    echo -e "${BLUE}===================== Samba用户管理 ======================${NC}"
    show_system_users
    echo
    show_samba_users
    echo -e "${BLUE}---------------------------------------------------------${NC}"
    echo -e "${LIGHT_RED}1. 增加Samba用户${NC}"
    echo -e "${LIGHT_RED}2. 删除Samba用户${NC}"
    echo -e "${LIGHT_RED}3. 修改Samba用户密码${NC}"
    echo -e "${LIGHT_RED}4. 退出脚本${NC}"
    echo -e "${LIGHT_RED}5. 返回主菜单${NC}"
    echo -e "${BLUE}=========================================================${NC}"
    read -p "请选择操作 [1-5]: " choice
    case $choice in
        1) add_samba_user ;;
        2) delete_samba_user ;;
        3) modify_samba_user_password ;;
        4) echo "感谢使用,退出脚本。"; exit 0 ;;
        5) main_menu ;;
        *) echo -e "${RED}无效选择,请重试。${NC}"; sleep 2; samba_user_menu ;;
    esac
}
 
# 增加Samba用户
add_samba_user() {
    read -p "请输入要添加的Samba用户名(必须是系统用户): " username
     
    if ! id "$username" &>/dev/null; then
        echo -e "${RED}错误: 系统用户 $username 不存在,请先创建系统用户。${NC}"
        read -p "按任意键继续..."
        samba_user_menu
        return
    fi
     
    if pdbedit -L | grep -q "^$username:"; then
        echo -e "${RED}错误: $username 已为Samba用户。${NC}"
        read -p "按任意键继续..."
        samba_user_menu
        return
    fi
     
    smbpasswd -a "$username"
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}Samba用户 $username 添加成功。${NC}"
    else
        echo -e "${RED}添加Samba用户 $username 失败。${NC}"
    fi
     
    read -p "按任意键返回Samba用户管理菜单..."
    samba_user_menu
}
 
# 删除Samba用户
delete_samba_user() {
    read -p "请输入要删除的Samba用户名: " username
     
    if ! pdbedit -L | grep -q "^$username:"; then
        echo -e "${RED}错误: $username 不是Samba用户。${NC}"
        read -p "按任意键继续..."
        samba_user_menu
        return
    fi
     
    smbpasswd -x "$username"
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}Samba用户 $username 已成功删除。${NC}"
    else
        echo -e "${RED}删除Samba用户 $username 失败。${NC}"
    fi
     
    read -p "按任意键返回Samba用户管理菜单..."
    samba_user_menu
}
 
# 修改Samba用户密码
modify_samba_user_password() {
    read -p "请输入要修改密码的Samba用户名: " username
     
    if ! pdbedit -L | grep -q "^$username:"; then
        echo -e "${RED}错误: $username 不是Samba用户。${NC}"
        read -p "按任意键继续..."
        samba_user_menu
        return
    fi
     
    smbpasswd "$username"
     
    read -p "按任意键返回Samba用户管理菜单..."
    samba_user_menu
}
 
# Samba共享设置子菜单(使用小写数字)
samba_share_menu() {
    clear
    echo -e "${BLUE}===================== Samba共享设置 ======================${NC}"
    #echo -e "${CYAN}可用用户参考:${NC}"
    show_system_users
    echo
    show_samba_users
    echo -e "${BLUE}---------------------------------------------------------${NC}"
    echo -e "${LIGHT_RED}1. 开始设置新共享${NC}"
    echo -e "${LIGHT_RED}2. 手动修改smb.conf${NC}"
    echo -e "${LIGHT_RED}3. 退出脚本${NC}"
    echo -e "${LIGHT_RED}4. 返回主菜单${NC}"
    echo -e "${BLUE}=========================================================${NC}"
    read -p "请选择操作 [1-4]: " choice
    case $choice in
        1) setup_new_share ;;
        2) edit_smb_conf_external ;;
        3) echo "感谢使用,退出脚本。"; exit 0 ;;
        4) main_menu ;;
        *) echo -e "${RED}无效选择,请重试。${NC}"; sleep 2; samba_share_menu ;;
    esac
}
 
# 带esc/ESC检测的读取函数,支持返回Samba共享设置主菜单
read_with_esc() {
    local prompt=$1
    local var_name=$2
    local default=$3
     
    echo -n "$prompt" >&2
    read -r input
     
    # 检查是否输入esc或ESC,直接返回Samba共享设置主菜单
    if [ "$input" = "esc" ] || [ "$input" = "ESC" ]; then
        clear  # 清屏
        echo "检测到返回命令,返回共享设置主菜单..."
        echo  # 空行
        samba_share_menu  # 直接调用共享设置主菜单
        return  # 退出当前函数
    fi
     
    # 应用默认值
    if [ -z "$input" ] && [ -n "$default" ]; then
        input="$default"
    fi
     
    # 将结果赋值给变量
    eval "$var_name='$input'"
    return 0
}
 
# 输入验证函数 - 只允许yes/no/回车/esc/ESC,支持返回Samba共享设置主菜单
validate_yes_no() {
    local prompt=$1
    local default=$2
    local input
     
    while true; do
        echo -n "$prompt" >&2
        read -r input
         
        # 检查是否输入esc或ESC,直接返回Samba共享设置主菜单
        if [ "$input" = "esc" ] || [ "$input" = "ESC" ]; then
            clear  # 清屏
            echo "检测到返回命令,返回共享设置主菜单..."
            echo  # 空行
            samba_share_menu  # 直接调用共享设置主菜单
            return  # 退出当前函数
        fi
         
        input=$(echo "$input" | tr '[:upper:]' '[:lower:]')  # 转换为小写
         
        # 允许为空(使用默认值)
        if [ -z "$input" ]; then
            echo "$default"
            return 0
        fi
         
        # 验证是否为yes或no
        if [ "$input" = "yes" ] || [ "$input" = "no" ]; then
            echo "$input"
            return 0
        fi
         
        # 输入无效,提示重新输入(使用标准错误输出)
        echo -e "${RED}输入无效!请输入 'yes'、'no'、'esc'(返回) 或直接回车使用默认值 '$default'。${NC}" >&2
    done
}
 
# 配置确认函数 - 显示实际要写入smb.conf的内容,支持返回Samba共享设置主菜单
confirm_settings() {
    local config_lines=$1
 
    clear
    echo -e "${BLUE}===================== 共享配置确认 =======================${NC}"
    echo -e "${CYAN}以下是将写入smb.conf的配置内容:${NC}"
    echo -e "${BLUE}---------------------------------------------------------${NC}"
    echo "$config_lines"
    echo -e "${BLUE}---------------------------------------------------------${NC}"
    echo -e "${RED}输入 'esc' 可返回共享设置主菜单${NC}"
    read -p "确认使用以上配置? [y/N] " confirm
     
    # 检查是否输入esc或ESC,直接返回Samba共享设置主菜单
    if [ "$confirm" = "esc" ] || [ "$confirm" = "ESC" ]; then
        clear  # 清屏
        echo "检测到返回命令,返回共享设置主菜单..."
        echo  # 空行
        samba_share_menu  # 直接调用共享设置主菜单
        return  # 退出当前函数
    fi
     
    confirm=$(echo "$confirm" | tr '[:upper:]' '[:lower:]')
    if [ "$confirm" = "y" ] || [ "$confirm" = "yes" ]; then
        return 0  # 确认配置
    else
        clear  # 清屏
        echo "配置已取消,返回共享设置主菜单..."
        echo  # 空行
        samba_share_menu  # 直接调用共享设置主菜单
        return  # 退出当前函数
    fi
}
 
# 设置新共享(支持输入esc/ESC返回共享设置主菜单)
setup_new_share() {
    local share_name="共享文件夹"
    local comment="$CURRENT_USER的共享文件夹"
    local path="/data/usershare/$share_name"
    local valid_users=""
    local writeable="no"
    local write_list=""
    local guest_ok="no"
    local guest_writeable="no"
    local config_lines=""
 
    # 读取共享名,支持esc/ESC返回共享设置主菜单
    read_with_esc "$(echo -e "${RED}【设置1】请输入共享名 (默认: $share_name,输入esc返回): ${NC}")" share_name "$share_name"
     
    # 读取共享描述,支持esc/ESC返回共享设置主菜单
    read_with_esc "$(echo -e "${RED}【设置2】请输入共享描述 (默认: $comment,输入esc返回): ${NC}")" comment "$comment"
     
    # 读取共享目录,支持esc/ESC返回共享设置主菜单
    read_with_esc "$(echo -e "${RED}【设置3】请输入共享目录 (默认: $path,输入esc返回): ${NC}")" path "$path"
     
    # 询问是否全部有效用户可写,支持esc/ESC返回共享设置主菜单
    writeable=$(validate_yes_no "$(echo -e "${RED}【设置4】是否允许任意用户可写? (yes/no, 默认: no,输入esc返回): ${NC}")" "no")
     
    # 询问有效用户,支持esc/ESC返回共享设置主菜单
    read_with_esc "$(echo -e "${RED}【设置5】请输入允许访问的有效用户(用逗号分隔,回车为空,输入esc返回): ${NC}")" valid_users
     
    # 询问可写用户,支持esc/ESC返回共享设置主菜单
    read_with_esc "$(echo -e "${RED}【设置6】请输入允许写入的用户(用逗号分隔,回车则为空,输入esc返回): ${NC}")" write_list
     
    # 询问是否允许游客访问,支持esc/ESC返回共享设置主菜单
    guest_ok=$(validate_yes_no "$(echo -e "${RED}【设置7】是否允许游客访问? (yes/no, 默认: no,输入esc返回): ${NC}")" "no")
     
    # 如果允许游客访问,添加nobody到有效用户列表
    if [ "$guest_ok" = "yes" ]; then
        if [ -z "$valid_users" ]; then
            valid_users="nobody"
        else
            valid_users="$valid_users, nobody"
        fi
         
        # 询问游客是否可写,支持esc/ESC返回共享设置主菜单
        guest_writeable=$(validate_yes_no "$(echo -e "${RED}【设置8】是否允许游客写入? (yes/no, 默认: no,输入esc返回): ${NC}")" "no")
         
        if [ "$guest_writeable" = "yes" ]; then
            if [ -z "$write_list" ]; then
                write_list="nobody"
            else
                write_list="$write_list, nobody"
            fi
        fi
    fi
 
    # 生成要写入smb.conf的配置内容
    config_lines="[$share_name]
    comment = $comment
    path = $path
    browseable = yes
    read only = $(if [ "$writeable" = "yes" ]; then echo "no"; else echo "yes"; fi)
    writeable = $writeable
    guest ok = $guest_ok"
     
    # 只有当用户列表不为空时才添加相应配置
    if [ -n "$valid_users" ]; then
        config_lines="$config_lines
    valid users = $valid_users"
    fi
     
    if [ -n "$write_list" ]; then
        config_lines="$config_lines
    write list = $write_list"
    fi
     
    # 添加剩余配置
    config_lines="$config_lines
    create mask = 0766
    directory mask = 0766
    inherit permissions = no
    force user = $CURRENT_USER
    force group = $CURRENT_GROUP"
 
    # 显示实际配置内容并确认,支持esc/ESC返回共享设置主菜单
    confirm_settings "$config_lines"
    # 如果用户确认配置,会继续执行下面的代码,否则已经在confirm_settings中返回主菜单
     
    # 创建共享目录并设置权限
    if [ ! -d "$path" ]; then
        mkdir -p "$path"
        chown -R "$CURRENT_USER:$CURRENT_GROUP" "$path"
        chmod 0766 "$path"
        echo -e "${GREEN}【提示】已创建共享目录: $path${NC}"
    fi
     
    # 备份配置文件
    cp /etc/samba/smb.conf /etc/samba/smb.conf.bak.$(date +%Y%m%d%H%M%S)
     
    # 将配置写入文件
    echo -e "\n$config_lines" >> /etc/samba/smb.conf
 
    echo -e "${GREEN}【完成】共享设置已添加到smb.conf${NC}"
     
    # 重启服务生效
    systemctl restart smbd
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}【提示】Samba服务已重启,新共享生效。${NC}"
    else
        echo -e "${RED}【提示】重启Samba服务失败,请手动重启。${NC}"
    fi
     
    read -p "按任意键返回共享设置菜单..."
    samba_share_menu
}
 
# 外部窗口打开smb.conf(不阻塞脚本运行)
edit_smb_conf_external() {
    #echo "正在外部窗口打开smb.conf..."
     
    # 尝试用pluma在后台打开,不阻塞脚本
    if command -v pluma &>/dev/null; then
        #pluma /etc/samba/smb.conf & disown
        pluma /etc/samba/smb.conf
        echo -e "${GREEN}已用pluma在新窗口打开smb.conf${NC}"
    else
        # 尝试其他图形化编辑器
        for editor in gedit kate mousepad; do
            if command -v $editor &>/dev/null; then
                $editor /etc/samba/smb.conf & disown
                echo -e "${GREEN}已用$editor在新窗口打开smb.conf${NC}"
                return
            fi
        done
         
        # 如果没有图形化编辑器,提示用户
        echo -e "${RED}未找到图形化编辑器,您可以在另一个终端中运行以下命令编辑:${NC}"
        echo -e "${CYAN}sudo pluma /etc/samba/smb.conf  或  sudo nano /etc/samba/smb.conf${NC}"
    fi
     
    read -p "按任意键返回共享设置菜单..."
    samba_share_menu
}
 
# Samba服务管理子菜单(使用小写数字)
samba_service_menu() {
    # 获取当前服务状态
    if command -v systemctl &>/dev/null; then
        status=$(systemctl is-active smbd)
    else
        status="未知(未使用systemd)"
    fi
     
    clear
    echo -e "${BLUE}===================== Samba服务管理 ======================${NC}"
    echo -e "${CYAN}当前Samba服务状态: $status${NC}"
    echo -e "${BLUE}---------------------------------------------------------${NC}"
    echo -e "${LIGHT_RED}1. 启动Samba服务${NC}"
    echo -e "${LIGHT_RED}2. 停止Samba服务${NC}"
    echo -e "${LIGHT_RED}3. 重启Samba服务${NC}"
    echo -e "${LIGHT_RED}4. 重新加载Samba配置(不中断服务)${NC}"
    echo -e "${LIGHT_RED}5. 设置Samba服务开机自启${NC}"
    echo -e "${LIGHT_RED}6. 禁用Samba服务开机自启${NC}"
    echo -e "${LIGHT_RED}7. 查看Samba服务状态${NC}"
    echo -e "${LIGHT_RED}8. 退出脚本${NC}"
    echo -e "${LIGHT_RED}9. 返回主菜单${NC}"
    echo -e "${BLUE}=========================================================${NC}"
    read -p "请选择操作 [1-9]: " choice
    case $choice in
        1) start_samba_service ;;
        2) stop_samba_service ;;
        3) restart_samba_service ;;
        4) reload_samba_service ;;
        5) enable_samba_autostart ;;
        6) disable_samba_autostart ;;
        7) check_samba_status ;;
        8) echo "感谢使用,退出脚本。"; exit 0 ;;
        9) main_menu ;;
        *) echo -e "${RED}无效选择,请重试。${NC}"; sleep 2; samba_service_menu ;;
    esac
}
 
# 启动Samba服务
start_samba_service() {
    if command -v systemctl &>/dev/null; then
        systemctl start smbd
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}Samba服务已成功启动${NC}"
        else
            echo -e "${RED}启动Samba服务失败${NC}"
        fi
    else
        service smbd start
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}Samba服务已成功启动${NC}"
        else
            echo -e "${RED}启动Samba服务失败${NC}"
        fi
    fi
    read -p "按任意键返回服务管理菜单..."
    samba_service_menu
}
 
# 停止Samba服务
stop_samba_service() {
    if command -v systemctl &>/dev/null; then
        systemctl stop smbd
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}Samba服务已成功停止${NC}"
        else
            echo -e "${RED}停止Samba服务失败${NC}"
        fi
    else
        service smbd stop
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}Samba服务已成功停止${NC}"
        else
            echo -e "${RED}停止Samba服务失败${NC}"
        fi
    fi
    read -p "按任意键返回服务管理菜单..."
    samba_service_menu
}
 
# 重启Samba服务
restart_samba_service() {
    if command -v systemctl &>/dev/null; then
        systemctl restart smbd
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}Samba服务已成功重启${NC}"
        else
            echo -e "${RED}重启Samba服务失败${NC}"
        fi
    else
        service smbd restart
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}Samba服务已成功重启${NC}"
        else
            echo -e "${RED}重启Samba服务失败${NC}"
        fi
    fi
    read -p "按任意键返回服务管理菜单..."
    samba_service_menu
}
 
# 重新加载Samba配置
reload_samba_service() {
    if command -v systemctl &>/dev/null; then
        systemctl reload smbd
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}Samba配置已成功重新加载${NC}"
        else
            echo -e "${RED}重新加载Samba配置失败${NC}"
        fi
    else
        service smbd reload
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}Samba配置已成功重新加载${NC}"
        else
            echo -e "${RED}重新加载Samba配置失败${NC}"
        fi
    fi
    read -p "按任意键返回服务管理菜单..."
    samba_service_menu
}
 
# 设置Samba开机自启
enable_samba_autostart() {
    if command -v systemctl &>/dev/null; then
        systemctl enable smbd
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}已设置Samba服务开机自启${NC}"
        else
            echo -e "${RED}设置Samba开机自启失败${NC}"
        fi
    else
        update-rc.d smbd enable
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}已设置Samba服务开机自启${NC}"
        else
            echo -e "${RED}设置Samba开机自启失败${NC}"
        fi
    fi
    read -p "按任意键返回服务管理菜单..."
    samba_service_menu
}
 
# 禁用Samba开机自启
disable_samba_autostart() {
    if command -v systemctl &>/dev/null; then
        systemctl disable smbd
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}已禁用Samba服务开机自启${NC}"
        else
            echo -e "${RED}禁用Samba开机自启失败${NC}"
        fi
    else
        update-rc.d smbd disable
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}已禁用Samba服务开机自启${NC}"
        else
            echo -e "${RED}禁用Samba开机自启失败${NC}"
        fi
    fi
    read -p "按任意键返回服务管理菜单..."
    samba_service_menu
}
 
# 查看Samba服务状态
check_samba_status() {
    echo -e "${CYAN}Samba服务状态详情:${NC}"
    if command -v systemctl &>/dev/null; then
        systemctl status smbd --no-pager
    else
        service smbd status
    fi
    read -p "按任意键返回服务管理菜单..."
    samba_service_menu
}
 
main_menu

根据以上保存了脚本,然后执行就可以正常操作!

问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信

所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!

支付宝赞助
微信赞助

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如您下载该资源,行为将被视为对《免责声明》全部内容的认可->联系老梁投诉资源
LaoLiang.Net部分资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事务联系邮箱:service@laoliang.net
意在交流学习,欢迎赞赏评论,如有谬误,请联系指正;转载请注明出处: » Linux系统利用bash脚本设置Samba服务器管理功能

发表回复

本站承接,网站推广(SEM,SEO);软件安装与调试;服务器或网络推荐及配置;APP开发与维护;网站开发修改及维护; 各财务软件安装调试及注册服务(金蝶,用友,管家婆,速达,星宇等);同时也有客户管理系统,人力资源,超市POS,医药管理等;

立即查看 了解详情