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服务器管理功能

