如何编写自动恢复出厂设置脚本

wen 实用脚本 2

本文目录导读:

如何编写自动恢复出厂设置脚本

  1. Windows 系统
  2. Linux 系统
  3. macOS 系统
  4. 重要安全提示
  5. 执行建议

我来为您介绍编写自动恢复出厂设置脚本的方法,针对不同操作系统会有不同的实现方式。

Windows 系统

使用系统重置功能(PowerShell脚本)

# Windows 10/11 恢复出厂设置脚本
# 需要管理员权限运行
# 检查是否以管理员身份运行
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
    Write-Host "请以管理员身份运行此脚本" -ForegroundColor Red
    exit 1
}
Write-Host "准备恢复出厂设置..." -ForegroundColor Yellow
Write-Host "警告:此操作将删除所有个人文件和应用!" -ForegroundColor Red
# 确认操作
$confirmation = Read-Host "是否继续?(Y/N)"
if ($confirmation -ne 'Y' -and $confirmation -ne 'y') {
    Write-Host "操作已取消" -ForegroundColor Yellow
    exit
}
# 执行恢复出厂设置
try {
    # 使用系统重置功能
    Start-Process -FilePath "systemreset" -ArgumentList "-factoryreset" -Wait -NoNewWindow
    Write-Host "恢复出厂设置命令已执行" -ForegroundColor Green
} catch {
    Write-Error "执行失败: $_"
}

完全自动重启到恢复模式(Windows 10/11)

# 自动重启到恢复环境并执行重置
# 需要管理员权限
# 创建自动重置计划
$resetCommand = @'
# 自动恢复脚本 - 将在恢复环境中执行
Start-Process -FilePath "systemreset" -ArgumentList "-factoryreset /quiet /noconfirm" -Wait
'@
# 保存为临时脚本
$tempScript = [System.IO.Path]::GetTempFileName() + ".ps1"
$resetCommand | Out-File -FilePath $tempScript -Encoding UTF8
# 设置计划任务在系统启动时运行
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File `"$tempScript`""
$trigger = New-ScheduledTaskTrigger -AtStartup
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName "FactoryResetAuto" -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Force
# 重启系统
Restart-Computer -Force

Linux 系统

通用Linux恢复脚本

#!/bin/bash
# Linux 恢复出厂设置脚本
# 需要root权限执行
# 检查root权限
if [ "$EUID" -ne 0 ]; then 
    echo "请以root权限运行此脚本"
    exit 1
fi
echo "===== 系统恢复出厂设置 ====="
echo "警告:此操作将删除所有系统数据!"
echo "请确保已备份重要文件!"
# 确认操作
read -p "是否继续?(y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    echo "操作已取消"
    exit 1
fi
# 根据发行版执行不同操作
if [ -f /etc/debian_version ]; then
    # Debian/Ubuntu系统 - 重置为初始配置
    echo "检测到Debian/Ubuntu系统..."
    # 恢复默认配置文件
    dpkg --configure -a
    # 清除用户数据(保留系统文件)
    rm -rf /home/*
    rm -rf /tmp/*
    rm -rf /var/tmp/*
    # 重置服务配置
    apt-get --reinstall install -y $(dpkg -l | grep '^ii' | awk '{print $2}')
elif [ -f /etc/redhat-release ]; then
    # CentOS/RHEL系统
    echo "检测到CentOS/RHEL系统..."
    # 恢复默认系统文件
    rpm --rebuilddb
    yum reinstall -y $(rpm -qa)
    # 清理用户数据
    rm -rf /home/*
else
    # 通用Linux恢复
    echo "通用Linux恢复..."
    # 清除用户配置
    for user_home in /home/*; do
        if [ -d "$user_home" ]; then
            rm -rf "$user_home"/*
        fi
    done
fi
echo "系统恢复完成!"
echo "建议重启系统以应用更改。"

高级Linux重置脚本(带备份功能)

#!/bin/bash
# 高级恢复出厂设置脚本
# 包含备份和恢复点功能
BACKUP_DIR="/backup/factory_reset"
DATE=$(date +%Y%m%d_%H%M%S)
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# 错误处理函数
error_exit() {
    echo -e "${RED}错误: $1${NC}" >&2
    exit 1
}
# 检查root权限
check_root() {
    if [ "$EUID" -ne 0 ]; then
        error_exit "请以root权限运行此脚本"
    fi
}
# 创建系统快照(备份)
create_snapshot() {
    echo -e "${YELLOW}创建系统快照...${NC}"
    mkdir -p "$BACKUP_DIR"
    # 备份关键系统配置
    cp -r /etc "$BACKUP_DIR/etc_backup_$DATE" 2>/dev/null
    cp /etc/fstab "$BACKUP_DIR/fstab_backup_$DATE" 2>/dev/null
    # 备份用户列表
    getent passwd > "$BACKUP_DIR/passwd_backup_$DATE"
    getent group > "$BACKUP_DIR/group_backup_$DATE"
    echo -e "${GREEN}快照已创建: $BACKUP_DIR${NC}"
}
# 恢复出厂设置
factory_reset() {
    echo -e "${RED}开始恢复出厂设置...${NC}"
    # 1. 停止所有用户进程
    echo "停止用户进程..."
    pkill -u $(ls /home/) 2>/dev/null
    # 2. 清除用户数据
    echo "清除用户数据..."
    for user_dir in /home/*; do
        if [ -d "$user_dir" ]; then
            rm -rf "$user_dir"
        fi
    done
    # 3. 重置系统配置
    echo "重置系统配置..."
    if command -v dpkg &> /dev/null; then
        dpkg --configure -a
        dpkg --audit
    fi
    # 4. 重置网络配置
    echo "重置网络配置..."
    cat > /etc/hostname << EOF
localhost
EOF
    cat > /etc/hosts << EOF
127.0.0.1   localhost
::1         localhost ip6-localhost ip6-loopback
EOF
    # 5. 清除日志和临时文件
    echo "清除日志文件..."
    find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
    rm -rf /tmp/*
    rm -rf /var/tmp/*
    echo -e "${GREEN}恢复出厂设置完成!${NC}"
}
# 主函数
main() {
    check_root
    echo "================================="
    echo "    恢复出厂设置工具 v1.0"
    echo "================================="
    echo "1. 创建系统快照并恢复"
    echo "2. 直接恢复(不备份)"
    echo "3. 退出"
    echo "================================="
    read -p "请选择操作 [1-3]: " choice
    case $choice in
        1)
            create_snapshot
            read -p "是否继续恢复出厂设置?(y/n): " confirm
            if [[ $confirm =~ ^[Yy]$ ]]; then
                factory_reset
            fi
            ;;
        2)
            read -p "警告:将删除所有数据!确认?(yes/no): " confirm
            if [ "$confirm" = "yes" ]; then
                factory_reset
            fi
            ;;
        3)
            echo "退出"
            exit 0
            ;;
        *)
            echo "无效选择"
            exit 1
            ;;
    esac
}
# 执行主函数
main

macOS 系统

macOS恢复出厂设置脚本

#!/bin/bash
# macOS 恢复出厂设置脚本
# 需要管理员权限
echo "macOS 恢复出厂设置"
echo "=================="
# 检查权限
if [ "$EUID" -ne 0 ]; then
    echo "请使用 sudo 运行此脚本"
    exit 1
fi
echo "警告:此操作将清除所有用户数据!"
# 确认操作
read -p "是否继续?(y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    exit 1
fi
# 1. 关闭系统完整性保护(SIP)提示
echo "注意:如果SIP已启用,请先在恢复模式中禁用它"
# 2. 清除用户数据
echo "清除用户数据..."
dscl . -list /Users | grep -v "^_" | grep -v "root" | grep -v "daemon" | while read user; do
    if [ "$user" != "nobody" ]; then
        dscl . -delete /Users/$user
    fi
done
# 3. 重置系统配置
echo "重置系统配置..."
rm -rf /Library/Preferences/*
rm -rf /Library/Caches/*
# 4. 清除日志
echo "清除系统日志..."
rm -rf /var/log/*
# 5. 清除临时文件
echo "清除临时文件..."
rm -rf /private/var/tmp/*
rm -rf /private/tmp/*
echo "恢复出厂设置完成!"
echo "建议重启系统后进入恢复模式执行完整恢复。"

重要安全提示

  1. 备份数据:执行任何恢复操作前,务必备份重要数据
  2. 权限要求:大多数恢复操作需要管理员/root权限
  3. 测试环境:先在虚拟机或测试环境测试脚本
  4. 法律合规:确保有权限执行这些操作
  5. 系统要求:不同系统和版本可能需要调整脚本

执行建议

  • 在开发/测试环境先测试脚本
  • 添加详细的日志记录
  • 提供撤销/回滚机制
  • 考虑使用系统原生的恢复功能
  • 为关键操作添加多重确认

选择适合您需求的脚本,并根据具体系统环境进行调整,对于生产环境,建议使用系统官方提供的恢复工具。

抱歉,评论功能暂时关闭!