You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS重启后多用户自动登录脚本需求及问题咨询

需求可行性与解决方案

你的需求完全可行,之前的模拟脚本失效原因是:锁屏/登录窗口状态下System Events无足够权限操控输入,且脚本未配置为系统启动时自动触发的任务。以下是具体实现方案:

一、修改登录模拟脚本

替换原AppleScript部分,改为针对macOS登录窗口的精准操控,同时支持多用户登录触发:

#!/bin/bash
# 多用户列表
USERS=("user1" "user2" "user3")
PASSWORD="1234"

# 模拟登录指定用户
simulate_login() {
    local target_user=$1
    local pass=$2

    osascript <<EOF
    tell application "System Events"
        # 等待登录窗口加载完成
        repeat until exists window "Login Window"
            delay 0.5
        end repeat
        # 选择目标用户(列表式登录界面适配)
        select row where value of static text 1 is "$target_user" of table 1 of scroll area 1 of window "Login Window"
        keystroke return
        delay 1
        # 输入密码
        keystroke "$pass"
        keystroke return
        # 等待登录完成,避免重复触发
        delay 5
    end tell
EOF
}

# 先自动登录第一个用户(系统默认仅支持单用户自动登录,后续切换其他用户)
simulate_login "${USERS[0]}" "$PASSWORD"

# 触发其他用户快速切换登录(macOS支持多用户同时在线)
for user in "${USERS[@]:1}"; do
    osascript <<EOF
    tell application "System Events"
        # 触发用户切换菜单
        keystroke "q" using {control down, command down}
        delay 1
        select row where value of static text 1 is "$user" of table 1 of scroll area 1 of window "Fast User Switching"
        keystroke return
        delay 1
        keystroke "$PASSWORD"
        keystroke return
        delay 3
    end tell
EOF
done

echo "多用户自动登录完成"

二、配置launchd plist实现开机自动运行

创建~/Library/LaunchAgents/com.auto.login.plist文件(若需全局生效,放在/Library/LaunchAgents/),内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.auto.login</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>/path/to/your/login_script.sh</string> <!-- 替换为你的脚本绝对路径 -->
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
    <key>StandardOutPath</key>
    <string>/var/log/auto_login.log</string>
    <key>StandardErrorPath</key>
    <string>/var/log/auto_login_error.log</string>
</dict>
</plist>

配置权限并加载plist

  1. 给脚本添加执行权限:
chmod +x /path/to/your/login_script.sh
  1. 设置plist文件权限:
chmod 644 ~/Library/LaunchAgents/com.auto.login.plist
chown $USER:staff ~/Library/LaunchAgents/com.auto.login.plist
  1. 加载plist:
launchctl load ~/Library/LaunchAgents/com.auto.login.plist

三、关键注意事项

  • 权限设置:需在「系统设置-隐私与安全性-辅助功能」中添加Terminal和bash的权限,允许它们控制电脑。
  • 登录界面样式:若你的macOS登录界面是头像网格而非列表,需调整AppleScript中定位用户的逻辑(将table 1改为group相关元素)。
  • 多用户登录限制:macOS支持多用户同时在线,但自动登录仅能默认触发一个,后续通过快速切换实现其他用户登录是唯一可行的方式。

内容的提问来源于stack exchange,提问作者Cyanic Wolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:15:15