Знайте (с первого взгляда), что ваш клиент Mac обновлен

У нас более тысячи клиентов Mac, и время от времени мы выпускаем изменения, которые затрагивают многие или все из них (например, установка нового программного обеспечения, создание учетных записей локальных пользователей или применение обновлений). Я хочу знать, какие методы вы используете, чтобы знать, что ваши клиенты обновлены, на первый взгляд, поскольку мы обнаруживаем, что, когда некоторые машины пропускают обновление, это довольно плохо отражается на нас:)

Выпуск изменений: я имею в виду использование системы, которая проталкивает изменения, такие как Casper, Puppet, radmind, Apple Remote Desktop или даже взломанный ssh-empowered expect скрипт.

Что касается "с первого взгляда", есть два основных места, где я мог бы взглянуть (особенно если информация не была действительно очевидна из системы, которая выпустила изменения):

  • ходить в компьютерную лабораторию и смотреть на экраны (даже на расстоянии)
  • сканирование лаборатории через Apple Remote Desktop и поиск по четырем настраиваемым полям.

Мне приходит в голову, что простым изменением будет изменение фона экрана входа в систему или изменение текста в окне входа в систему. Что может быть еще более мощным, так это способ взять стандартный фон рабочего стола и сделать аннотированную копию (возможно, с несколькими точками или текстом на нем, чтобы представить изменения, которые он претерпел). [Кто-нибудь знает, как это сделать, или я должен задать его как отдельный вопрос, либо здесь, либо в stackoverflow?]

Другое простое изменение - установить одно из четырех полей ARD следующим образом:

defaults write /Library/Preferences/com.apple.RemoteDesktop Text4 "`date +%Y-%m-%d`"

Итак, что вы делаете, чтобы знать, что ваши клиенты в курсе (или, наоборот, что бы вы хотели сделать, если бы вы знали, как это сделать?)

3 ответа

Я не уверен, что это именно то, о чем вы думали, но я могу поделиться этим, тем не менее.

Если бы можно было определить, была ли машина обновлена, запустив в системе команду терминала, вы могли бы написать свой собственный подключаемый модуль Nagios для автоматизации проверок. Это может включать наличие ключа SSH в каждой системе, чтобы nagios мог войти в систему как непривилегированный пользователь и выполнить команду проверки.

Один из очень простых способов сделать это состоит в том, чтобы ваши обновления всегда оставляли какую-то строку в заранее определенном месте. Затем на сервере Nagios есть файл с "последней" строкой. Затем плагин должен будет просто проверить флаг на машине против "последнего" флага на сервере Nagios. Затем вы можете наблюдать, как обновления распространяются на Nagios, и быстро увидеть, какие машины установлены и не обновлены.

Если вы хотите избежать большого количества сообщений об ошибках, когда машины находятся в автономном режиме, вы можете заставить плагин возвращать предупреждение, а не ошибку, когда он не может подключиться, и установить уведомления для проверки, чтобы не запускаться только в состоянии предупреждения. в состоянии сбоя. Возможно, еще проще, вы можете включать и выключать проверку из графического интерфейса Nagios, когда и вам нужно сделать проверку, а не постоянно оставлять ее запущенной.

Пища для размышления, возможно.

Вы можете получить версии приложения из командной строки с этим

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

Если на вашем компьютере уже есть изображение, которое вы хотите использовать для фона, этот сценарий установит его и сообщит окну входа в систему для перезагрузки и отображения изображения (если графически никто не вошел в систему).

#!/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
Другие вопросы по тегам