Я отвечаю за около 40 компьютеров Mac OS X в сети, в основном состоящей из ПК. Системы работают под управлением Mac OS X 10.5 и 10.6 примерно в равной степени.
Мы вводим новую политику еженедельного принудительного обновления ОС и программного обеспечения на всех машинах. У нас есть программное обеспечение для управления системой, которое упрощает эту задачу для ПК, но я немного затрудняюсь найти отличное решение для Mac. Вот чего я хочу:
Каждую пятницу примерно в 21:00 все Mac должны выходить на сервер обновления программного обеспечения Apple, загружать каждый патч и при необходимости перезагружаться. Это должно происходить автоматически и по расписанию без вмешательства пользователя или администратора.
У нас нет Mac OS X Server, и покупка его, вероятно, не будет вариантом в ближайшее время. Однако у меня есть последняя версия Apple Remote Desktop.
Любая помощь будет оценена.
Ответ Скотта по сути правильный, но лучшим методом будет следующая команда (см. softwareupdate
страница руководства для полной информации):
/usr/sbin/softwareupdate --install --all --schedule off && /sbin/reboot
Добавление --schedule off
будет препятствовать тому, чтобы машина проверяла и уведомляла пользователя о новых обновлениях в остальное время. && /sbin/reboot
перезапустит машину, если softwareupdate
закончил без ошибок.
Кроме того, я настоятельно рекомендую запускать это из launchd
по той единственной причине, что если машина спит в то время, когда она должна сработать, она будет запущена, как только машина проснется. Он все равно не сработает, если машина выключена, но он, по крайней мере, немного умнее, чем 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>
И команда будет помещена в bash
сценарий в /usr/local/sbin/asu_reboot
(Перезагрузка обновления программного обеспечения Apple), вызываемая указанным выше launchd
plist, вот так:
#!/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
Вы можете добавить запись cron в crontab пользователя root, которая будет делать это. Запись будет примерно такой:
0 19 * * 5 /usr/bin/softwareupdate --install --all
Чтобы отредактировать crontab пользователя root, вам нужно будет выполнить следующую команду: sudo crontab -e
Я не на 100% поддерживаю это решение, потому что мы используем РАДМИНД управлять нашими патчами, и эта концепция меня немного пугает.
Если вы не попадете в нечто вроде Кукольный тогда, я думаю, вам не повезло, пока вы не купите копию Сервер OSX Прости. Тем не менее, когда вы его получите, он вам понравится, он будет делать то, что вы хотите.