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
- 给脚本添加执行权限:
chmod +x /path/to/your/login_script.sh
- 设置plist文件权限:
chmod 644 ~/Library/LaunchAgents/com.auto.login.plist chown $USER:staff ~/Library/LaunchAgents/com.auto.login.plist
- 加载plist:
launchctl load ~/Library/LaunchAgents/com.auto.login.plist
三、关键注意事项
- 权限设置:需在「系统设置-隐私与安全性-辅助功能」中添加
Terminal和bash的权限,允许它们控制电脑。 - 登录界面样式:若你的macOS登录界面是头像网格而非列表,需调整AppleScript中定位用户的逻辑(将
table 1改为group相关元素)。 - 多用户登录限制:macOS支持多用户同时在线,但自动登录仅能默认触发一个,后续通过快速切换实现其他用户登录是唯一可行的方式。
内容的提问来源于stack exchange,提问作者Cyanic Wolf
相关产品推荐
相关产品推荐

