3

我已经尽力在 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 上编写脚本的新手,所以请评论你的代码以便我知道发生了什么,所以我不会在不知道它会做什么的情况下运行一些脚本代码。:)

谢谢

4

3 回答 3

5

要执行具有sudo管理员权限的 shell 脚本,请附加with administrator privilegesdo 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)

于 2009-09-03T02:20:09.837 回答
2

您可以通过编辑系统的 sudoers 文件来完成此操作。这将允许您用于运行此脚本的帐户(通过 cron 等)能够在没有密码的情况下运行 sudo。

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

$ sudo visudo

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

user_name    ALL=(ALL)     NOPASSWD:ALL

现在 user_name 应该可以输入 sudo 并且不会提示输入密码。

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

于 2009-09-03T02:24:09.970 回答
0

我手边没有mac,所以我无法验证这是否可行。

尝试运行 su -

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

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

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

见:http ://en.wikipedia.org/wiki/Cron

于 2009-09-03T02:13:43.233 回答