Newer
Older
lynxi-casic-demo / setup_nopasswd_reboot.sh
#!/bin/bash

# 定义变量
USERNAME=$(whoami) # 获取当前用户
COMMAND="/sbin/reboot" # 目标命令
SUDOERS_FILE="/etc/sudoers" # sudoers 文件路径
BACKUP_FILE="/etc/sudoers.bak" # 备份文件路径

# 检查是否有root权限
if [ "$EUID" -ne 0 ]; then
  echo "请以root用户权限运行此脚本(使用 sudo)。"
  exit 1
fi

# 备份 sudoers 文件
if [ ! -f "$BACKUP_FILE" ]; then
  echo "备份 $SUDOERS_FILE 到 $BACKUP_FILE"
  cp "$SUDOERS_FILE" "$BACKUP_FILE"
else
  echo "备份文件已存在,跳过备份步骤。"
fi

# 添加无密码规则
if grep -q "$USERNAME ALL=(ALL) NOPASSWD: $COMMAND" "$SUDOERS_FILE"; then
  echo "无密码规则已存在,无需重复添加。"
else
  echo "添加无密码规则到 $SUDOERS_FILE"
  echo "$USERNAME ALL=(ALL) NOPASSWD: $COMMAND" >> "$SUDOERS_FILE"
  echo "无密码规则添加成功。"
fi

# 验证 sudoers 文件
if visudo -c &>/dev/null; then
  echo "sudoers 文件语法验证通过。"
else
  echo "sudoers 文件语法验证失败,请手动检查!恢复原始文件..."
  cp "$BACKUP_FILE" "$SUDOERS_FILE"
  exit 1
fi

echo "设置完成,您现在可以无需密码执行:sudo $COMMAND"