如何在Mac OS X 10.6下使用脚本自动执行新系统配置?

时间:2011-01-09 06:29:12

标签: macos scripting automation

我已经在这方面工作了好几天,但根本找不到正确的参考资料才能使它发挥作用。

我们的想法是制作一个脚本,用于为进入公司的新购买的Mac提供基本功能,例如将自动登录设置为关闭,创建新的管理员用户(供远程管理员访问以获取支持,设置密码以解锁屏幕保护程序和等)。

管理员必须在每台新计算机上执行的基线示例列表:

  • 单击“登录选项”按钮设置“自动登录:关闭”
  • 检查:显示重启,睡眠和关机按钮
  • 取消选中:在登录窗口中显示输入菜单
  • 取消选中:显示密码提示
  • 取消选中:在登录窗口中使用配音
  • 检查:将快速用户切换菜单显示为短名称

    (注意:这只是每台机器上长列表的一部分)

我设法找到一些参考来使一些部分工作。 像自动登录一样可以解除:

defaults write /Library/Preferences/.GlobalPreferences com.apple.userspref.DisableAutoLogin -bool TRUE

我有点找到了使用AppleScript和shell命令来锻炼新用户(包括提示)的方法。

但通常很难找到方法来做一些简单的事情,例如打开密码以退出屏幕保护程序或允许快速用户切换。参考文件要么太有限,要么根本没有看到(例如我可以通过cli取消设置自动登录,但系统首选项“show restart,sleep和shutdown按钮”的下一个设置是在其他地方,我找不到任何命令行使它成立)

是否有人对列表,文档,引用或系统上每个设置所在的位置有任何想法,以便我可以指出它使其工作?或者可能是上述示例的示例脚本......

到目前为止,我非常感谢您的阅读 - 非常感谢有任何关于上述内容的人。

2 个答案:

答案 0 :(得分:3)

一般情况下,各种设置的位置往往没有记录,但通常不难理解。

执行此操作的一种方法是更改​​设置并查看要修改的文件。 fseventer对此有好处,或者如果您安装了Xcode,则可以使用Packagemaker(启动快照包,更改设置,然后停止录制并查看快照中列出的文件已更改),或者只运行{ {1}}(并通过其丰富的输出进行排序)。

找到相关文件后,请更改设置&看看他们是如何改变的。如果文件是.plists,您可以使用sudo fs_usage -ew将它们转储到&之后和比较,或使用defaults将它们从二进制切换为人类可读的XML格式,并通过眼睛进行比较。请注意,有时会进行多次更改;例如,当禁用自动登录时,你真的应该从/Library/Preferences/com.apple.loginwindow.plist删除autoLoginUser密钥,并删除文件/ etc / kcpassword。

查找可配置设置的另一种方法是利用Apple的基于服务器的首选项工具Workgroup Manager。您可以在非服务器上安装Apple的服务器管理工​​具,并在本地使用它:

  • 运行/ Applications / Server / Workgroup Manager.app
  • 当它要求连接到服务器时,选择服务器>请改为查看目录菜单选项
  • 以管理员身份验证(靠近右上角的挂锁按钮)
  • 选择计算机帐户列表(左上角附近的小标签行中的矩形图标)
  • 创建一个虚拟计算机帐户(工具栏中的“新计算机”按钮)
  • 切换到prefs管理部分(工具栏中的“首选项”按钮)
  • 会有一堆可管理的偏好(你提到的大部分都会出现在登录部分);做出你感兴趣的任何选择
  • 切换到详细信息选项卡,您将能够看到正在控制哪个首选项域(实际上是.plist文件名)和首选项键。

您还可以为包含首选项清单的应用程序获取其他设置(超出“概述”选项卡中的设置):在“详细信息”下,单击“+”按钮,选择一个应用程序,然后打开相关的首选项域并尝试添加密钥到各个部分;如果应用程序有清单,单击首选项键名称将为您提供可用键的弹出菜单,选择一个将自动填充值类型,默认值以及它的作用说明。 /System/Library/CoreServices/ManagedClient.app的清单有一些非常有趣的选项;看看吧。

某些设置是按用户设置的,这意味着如果您要将它们应用于现有帐户,则必须编写脚本更改/ Users / * / Library / Preferences / ,也可以想要编辑用户模板(/ System / Library / User Template / English.lproj / Library / Preferences / ),以便随后创建的帐户将获得设置。此外,某些设置是每个用户每台计算机;这些存储在〜/ Library / Preferences / ByHost中,文件名中包含计算机ID(以太网MAC地址或硬件UUID);使用plutil -convert xml1设置这些。

如果您对一个文件进行了大量更改(例如loginwindow prefs),则可能更容易简单地复制预调整的设置文件而不是修改现有文件。

有关创建脚本帐户的更好方法,请参阅this serverfault question和/或查看instadmg附带的createUser包脚本。

如果您正在部署许多类似的计算机,那么可能值得研究对它们进行成像,而不是单独设置它们。请查看Apple's System Image UtilityDeployStudio以及各种讨论& afp548处的工具。还有Apple training class on deployment(偏见声明:我是本课程的培训师之一,所以我认为所有人应该参加),或者你可以购买class reference book分开。

编辑:我忘了提及systemsetupnetworksetup命令 - 对于他们所涵盖的设置,它们是最好的方式。

答案 1 :(得分:0)

我不知道在哪里可以找到权威文档...也许在developer.apple.com或系统管理员认证学习指南中。但是,我可以告诉您,输入菜单和密码hin位于域/Library/Preferences/com.apple.loginwindow中,键showInputMenu(布尔值 - 假或无关键)和retriesUntilHint(整数,> = 1分别为0,非分离为0。

你可以随时使用defaults domain列出所有可用的默认域名,然后尝试推断你认为某些内容会占据主导地位。或者你可以尝试defaults find <somestring>但有时设置是模糊的,所以只是进行可疑域名的转储会更容易。当然,如果要关闭默认值,关键字甚至都不会出现...所以如果你必须使用这种方法......首先打开所有内容,这样就可以设置密钥。