在OS X上运行具有管理员权限的脚本

时间:2009-09-03 02:03:55

标签: macos scripting applescript dscl

我已经尽力找到Stack Overflow和互联网上的许多脚本问题的解决方案,但我似乎无法找到我需要的解决方案。

我想要做的是创建一个更自动化,更少点击的解决方案,以删除系统上的所有移动缓存用户帐户。我一直在登录并手动转到用户帐户并通过单击“ - ”按钮逐个删除用户,然后单击“立即删除”以获取用户数据。这是有效的,但是很耗时,而且我有更好的时间与我的时间有关。所以我知道必须有一种方法可以用脚本来做到这一点。

我遇到了这段代码:

for cuser in `dscl . -list /Users AuthenticationAuthority | grep LocalCachedUser | awk '{print $1}' | tr '/n' ' '`; do
    dscl . -delete /Users/$cuser
done

如果我在终端运行此操作,我会收到权限错误。所以我想我需要用sudo运行它。所以我开始考虑创建AppleScripts来运行脚本,但我似乎无法找到正确的方法。

有什么想法吗?顺便说一下,我是Mac上脚本的新手,所以请注释你的代码,以便我知道发生了什么,所以我不会只是运行一些脚本代码而不知道它会做什么。 :)

由于

3 个答案:

答案 0 :(得分:5)

要执行包含sudo或管理员权限的shell脚本,请将with administrator privileges添加到do shell script行的末尾。例如:

do shell script "/path/to/script/file.sh" user name "adminusershortname" password "password" with administrator privileges

您可以在Apple的技术说明中找到更多关于do shell script

的信息

也就是说,将其保存为shell脚本并使用sudo运行shell脚本也可以。

#! /bin/sh

for cuser in `/usr/bin/dscl . -list /Users AuthenticationAuthority | grep LocalCachedUser | awk '{print $1}' | tr '/n' ' '`; do
    /usr/bin/dscl . -delete /Users/$cuser
done

将其另存为removeUser.sh,使用chmod将其设置为可执行文件(chmod 755),然后运行它(sudo ./removeUser.sh

答案 1 :(得分:2)

您可以通过编辑系统的sudoers文件来完成此操作。这将允许您使用的帐户运行此脚本(通过cron等),无需密码即可运行sudo。

要编辑sudoers文件,请使用visudo,但必须以管理员权限运行。尝试:

$ sudo visudo

在文件末尾添加如下所示的行,将 user_name 替换为将运行脚本的用户。注意,在每个字段之间使用制表符。

user_name    ALL=(ALL)     NOPASSWD:ALL

现在user_name应该能够输入sudo,并且不会提示输入密码。

另请注意,visudo是一个文本编辑器,它反映了vi编辑器并使用与vi相同的命令。

答案 2 :(得分:0)

我没有mac方便,所以我无法验证这是否有用。

尝试跑步 苏 -

然后运行你的脚本。如果可行,请尝试 crontab -e

并添加一个条目来运行你的脚本。

你熟悉crontab吗?好吧,如果不是谷歌它,如果需要。 但基本上每天午夜运行它你会有类似的东西 0 * * * * / path / to / script

请参阅:http://en.wikipedia.org/wiki/Cron