У нас более тысячи клиентов Mac, и мы время от времени вносим изменения, которые затрагивают многие или все из них (например, установка нового программного обеспечения, создание локальных учетных записей пользователей или применение обновлений). Я хочу знать, какие методы вы используете, чтобы сразу узнать, что ваши клиенты обновлены., потому что мы обнаруживаем, что когда некоторые машины пропускают обновление, это плохо отражается на нас :)
Выдача изменений: я имею в виду использование системы, которая выталкивает изменения, например Casper, Puppet, radmind, Apple Remote Desktop или даже взломанный ssh-empowered expect
сценарий.
Что касается «беглого взгляда», есть два основных места, куда я бы посмотрел (особенно если информация не была действительно очевидна из системы, которая выпустила изменения):
Мне приходит в голову, что простым изменением было бы изменить фон экрана входа в систему, или в изменить текст в окне входа в систему. Еще более мощным может оказаться способ взять стандартный фон рабочего стола и сделать его аннотированную копию (возможно, с некоторыми точками или текстом на нем, чтобы представить изменения, которым он подвергся). [Кто-нибудь знает, как это сделать, или мне следует задать это как отдельный вопрос, здесь или в stackoverflow?]
Другое простое изменение - установить одно из четырех полей ARD, например:
defaults write /Library/Preferences/com.apple.RemoteDesktop Text4 "`date +%Y-%m-%d`"
Итак, что вы делаете, чтобы знать, что ваши клиенты в курсе последних событий (или, альтернативно, что бы вы хотели сделать, если бы знали, как это сделать?)
Не уверен, что это именно то, о чем вы думали, но тем не менее я могу поделиться этим.
Если бы можно было определить, обновлена ли машина, запустив команду терминала в системе, вы могли бы написать свой собственный плагин Nagios для автоматизации проверок. Это потребует наличия SSH-ключа в каждой системе, чтобы позволить nagios войти в систему как непривилегированный пользователь и запустить команду проверки.
Я мог видеть один очень простой способ сделать это, если бы ваши обновления всегда оставляли какую-то строку в заранее определенном месте. Затем создайте файл на сервере Nagios с «последней» строкой. Тогда плагину просто нужно будет сравнить флаг на машине с «последним» флагом на сервере Nagios. Затем вы можете наблюдать за распространением обновлений на Nagios и быстро видеть, какие машины обновлены, а какие нет.
Если вы хотите избежать появления большого количества сообщений об ошибках, когда машины находятся в автономном режиме, вы можете заставить плагин возвращать предупреждение, а не ошибку, когда он не может подключиться, и настроить уведомления, чтобы проверка не запускалась в состоянии предупреждения, только в состоянии отказа. Возможно, даже проще, вы могли бы включать и выключать проверку из графического интерфейса Nagios по мере необходимости, вместо того, чтобы постоянно оставлять ее работающей.
Возможно, пища для размышлений.
Если у вас уже есть изображение на вашем компьютере, которое вы хотите использовать в качестве фона, этот сценарий установит его и сообщит окну входа в систему, чтобы перезагрузить и отобразить изображение (если никто не вошел в систему графически).
#!/bin/bash
# This script changes the background image on the login window
# Pass in the image name as the first parameter, or adjust it here:
NEW_IMAGE="/Library/Desktop Pictures/Nature/Earth Horizon.jpg"
if [[ "$1" != "" ]] ; then NEW_IMAGE="$1" ; fi
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
# Change the desktop background
defaults write /Library/Preferences/com.apple.loginwindow DesktopPicture "$NEW_IMAGE"
# Restart the login window if there are no graphical users logged in
# (If there is someone logged in, the display will change when they log out)
if [ "`who | grep -c console`" -eq "0" ] ; then
killall -SIGHUP loginwindow
fi
Вы можете получить версии приложения из командной строки с помощью этого
for app in /Applications/*.app; do
name=`basename "$app" .app`
ver=`cat "$app/Contents/Info.plist" |grep -A1 CFBundleShortVersionString | tail -1 | sed -e 's/.*<string>//;s/<.*//'`
echo "$name:$ver"
done
Хотя не каждое приложение использует этот идентификатор в файле info.plist