使用 AppleScript 执行登录命令
Do login command with AppleScript
非常简单——有没有办法执行登录命令,然后使用 do shell 脚本输入登录密码?
例如,我想使用密码 name 登录帐户 user。如何让脚本执行 login user 然后输入密码 name(无需打开新终端 window)?也许一些 bash 脚本可执行
do shell script "./mybashscript.sh"
即登录并输入密码。我希望它无形地。
如果您指的是 自动登录为不同的 OSX 用户,而不是 运行 shell 命令作为另一个用户:我不知道该怎么做。
如果您指的是 运行 shell 命令或 shell 脚本作为另一个用户,那是可行的,尽管它 需要管理凭证 - 不是目标用户的密码,而是具有管理权限的用户的密码。
以下解决方案只是在目标用户的上下文中执行 whoami
,这与该用户的用户名相呼应。
- 安全方式:提示管理凭据:
set targetUser to "user1"
do shell script "sudo -H -s -u " & targetUser & " whoami" with administrator privileges
- 不安全的方式:硬编码管理凭据:
set targetUser to "user1"
set adminUser to "admin"
set adminPasswd to "adminPassword" # !! NOT RECOMMENDED
do shell script "sudo -H -s -u " & targetUser & " whoami" ¬
user name adminUser password adminPasswd with administrator privileges
如果您想默认为当前用户,请省略 user name adminUser
子句,假设它是管理员。
至于传递给sudo
的选项:
-s
导致命令(whoami
,在本例中)由(非登录)shell( current 用户的 shell). 的实例
-H
确保 $HOME
环境变量设置为目标用户的,从而确保 target 用户的 shell 初始化文件已阅读。
非常简单——有没有办法执行登录命令,然后使用 do shell 脚本输入登录密码?
例如,我想使用密码 name 登录帐户 user。如何让脚本执行 login user 然后输入密码 name(无需打开新终端 window)?也许一些 bash 脚本可执行
do shell script "./mybashscript.sh"
即登录并输入密码。我希望它无形地。
如果您指的是 自动登录为不同的 OSX 用户,而不是 运行 shell 命令作为另一个用户:我不知道该怎么做。
如果您指的是 运行 shell 命令或 shell 脚本作为另一个用户,那是可行的,尽管它 需要管理凭证 - 不是目标用户的密码,而是具有管理权限的用户的密码。
以下解决方案只是在目标用户的上下文中执行 whoami
,这与该用户的用户名相呼应。
- 安全方式:提示管理凭据:
set targetUser to "user1"
do shell script "sudo -H -s -u " & targetUser & " whoami" with administrator privileges
- 不安全的方式:硬编码管理凭据:
set targetUser to "user1"
set adminUser to "admin"
set adminPasswd to "adminPassword" # !! NOT RECOMMENDED
do shell script "sudo -H -s -u " & targetUser & " whoami" ¬
user name adminUser password adminPasswd with administrator privileges
如果您想默认为当前用户,请省略 user name adminUser
子句,假设它是管理员。
至于传递给sudo
的选项:
-s
导致命令(whoami
,在本例中)由(非登录)shell( current 用户的 shell). 的实例
-H
确保$HOME
环境变量设置为目标用户的,从而确保 target 用户的 shell 初始化文件已阅读。