我主要负责PCnetworking上的大约40台Mac OS X电脑。 系统运行的Mac OS X 10.5和10.6的平等混合。
我们正在制定一项新的政策,每周安排一次在所有机器上强制安装操作系统和软件补丁。 我们有一些系统pipe理软件,这使得PC非常容易,但是我对Mac上的一个很好的解决scheme有点不知所措。 这是我想要发生的事情:
每个星期五像9PM一样,所有的苹果机都应该去苹果的软件更新服务器,下载每个补丁,并在必要时重新启动。 这应该自动和按照时间表进行,无需任何用户或pipe理员交互。
我们没有Mac OS X Server,购买一个可能在一段时间内不会成为一种select。 我确实有最新版本的Apple Remote Desktop。
任何帮助,将不胜感激。
Scott的答案基本上是正确的,但是更好的方法是使用以下命令(请参阅softwareupdate手册页获取完整的详细信息):
/usr/sbin/softwareupdate --install --all --schedule off && /sbin/reboot
--schedule off将阻止机器检查并通知用户新的更新剩下的时间。 如果softwareupdate没有错误, && /sbin/reboot将会重启机器。
此外,我强烈build议,这是从launchd运行,唯一的原因是,如果机器在睡觉的时候应该开火,一旦机器被唤醒就会运行。 如果机器关机,它仍然不会开火,但至less比cron更聪明一些。
一个launchd plist文件的例子如下(详见launchd.plist手册页 ),需要保存在/Library/LaunchDaemons/ ,像tld.domain.asu_reboot.plist :
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd > <plist version="1.0"> <dict> <key>Label</key> <string>tld.domain.softwareupdate</string> <key>ProgramArguments</key> <array> <string>/usr/local/sbin/asu_reboot</string> </array> <key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>21</integer> <key>Minute</key> <integer>0</integer> </dict> </dict> </plist>
并且该命令将被放入上面launchd plist所调用的/usr/local/sbin/asu_reboot (Apple Software Update Reboot)中的bash脚本中,如下所示:
#!/bin/bash /usr/sbin/softwareupdate --install --all --schedule off && /sbin/reboot
有了这两个项目( bash脚本和launchd plist),您将运行以下命令来加载作业(或重新启动机器,它会自动加载):
sudo launchctl load -w /Library/LaunchDaemons/tld.domain.asu_reboot.plist
除非你进入Puppet之类的东西,否则我认为你运气不好,直到你可以买一个OSX服务器的副本。 这就是说,当你得到它,你会喜欢它,它会做你想要的。
您可以将cron条目添加到root用户的crontab中,这将执行此操作。 入口将是这样的:
0 19 * * 5 /usr/bin/softwareupdate --install --all
为了编辑root用户的crontab,你需要运行以下命令: sudo crontab -e
我不是这个解决scheme的100%,因为我们使用RADMIND来pipe理我们的补丁,这个概念让我感到有点恐惧。