在我工作的学校部门,我们在十几所学校中每所都设有一个 Open Directory Master。我希望在多个目录中管理多个工作或计算机组的设置。
最愚蠢的方法是依次打开每个目录(使用工作组管理器),选择我想要管理的所有组,调整所有首选项,然后对每台服务器重复此操作,希望我做得正确并获得相同的结果。
有没有更好的办法?
我以为有某种方法可以从工作组管理器复制和粘贴设置。我知道有某种命令可以发出来导出和导入设置。看起来确实应该有一个工具可以做到这一点。(当然,如果我们使用单个主文件和多个副本,工作组管理器会工作得更好,但我们不会很快再尝试这样做。)
答案1
好吧,我将开始回答我自己的问题。
要获取远程 Open Directory Master 上哪些节点具有管理偏好设置的列表,您可以执行以下操作:
dscl -u DIRADMINUSER -p -url HOST \
list /LDAPv3/127.0.0.1/TYPE MCXSettings \
| cut -d " " -f 1
用正确的值替换大写字母。HOST 是 IP 或 DNS 名称或您的 Open Directory Master。-url 设置以 URL 编码导出值,这非常方便,这意味着它们都保留在一行上,我们可以应用 cut 命令。请注意,如果您想在命令行上指定密码而不是安全提示输入密码,请将其替换-p
为-P 'PASSWORD'
。
对于类型,您最有可能想要使用:
- 群组(针对工作组/用户组)
- 计算机组
- 电脑
- 用户
假设我们有一个名为 Grade5 (ITEMNAME=Grade5) 的用户组 (TYPE=Group)。要远程复制数据,我们可以用以下命令替代:
dscl -u DIRADMINUSER -p HOST \
mcxexport /LDAPv3/127.0.0.1/TYPE/ITEMNAME \
-format plist \
-o EXPORTFILE.plist
现在,由于 Radar 4122565,您无法(轻松地)远程导入文件。因此,将 EXPORTFILE.plist 复制到您想要复制设置的 Open Directory Master,然后在该框中按如下方式导入它:
dscl -u DIRADMINUSER -p \
/LDAPv3/127.0.0.1 mcximport /TYPE/NEWITEMNAME \
EXPORTFILE.plist
请注意,可以管理多个“应用程序域”(例如首选项文件)。要查看哪些是,请使用:
dscl -u DIRADMINUSER -p HOST \
mcxread /LDAPv3/127.0.0.1/TYPE/ITEMNAME \
-format text \
| grep "App domain" | uniq | cut -d " " -f3-
然后,您可以只导出一个应用程序域,甚至可以导出一个应用程序域和一个特定的密钥。
dscl -u DIRADMINUSER -p HOST \
mcxexport /LDAPv3/127.0.0.1/TYPE/ITEMNAME \
-format plist \
-o EXPORTFILE.plist APP_DOMAIN KEYNAME
如果我想要所有 dock 设置,我可能会使用“com.apple.dock”作为 APP_DOMAIN 并省略 KEYNAME;如果我只想要打印页脚设置,我可能会使用 com.apple.mcxprinting 的 APP_DOMAIN 和 PrintFooter 的 KEYNAME。
导出设置后,您可以照常导入它。(我还没有测试它是否会覆盖内容。)
最后,请注意,可以使用 mcxread 和 mcxset 代替 mcxexport 和 mcximport。
答案2
您可以通过菜单栏 -> 服务器 -> 导出(或导入)导出和导入工作组(根据您的目的)。我绝对尊重您后续帖子中的 shell 脚本,但它可能比您习惯使用的更高端。
此外,您可以让远程构建服务器简单地“连接到”Open Directory 主服务器,而不是使它们成为副本服务器。您可以获得大部分相同的优势。我个人多年来一直同时运行连接服务器和副本服务器。我甚至在使用率很高的 T-1 连接上同时运行这两种服务器。(事实上,使用副本服务器而不是连接服务器只有两个原因。一个是为了在远程、延迟大的站点中提高性能。另一个是为了冗余——主服务器可以关闭,用户仍然可以登录。)
也许这会给你理想的解决方案?你在使用 Replicas 时遇到了哪些问题?如果你感兴趣的话,也许我可以帮你。