我们有超过一千个Mac客户端,偶尔会发出影响其中许多或全部(例如安装新软件,创build本地用户帐户或应用更新)的更改。 我想知道你用什么方法知道你的客户是最新的,一目了然 ,因为我们发现,当一些机器错过了更新,它反映在我们身上相当糟糕:)
发布更改:我指的是使用一个系统推出更改,如Casper,Puppet,radmind,Apple远程桌面,甚至是一个黑客一起ssh授权expect脚本。
至于“一目了然”,有两个主要的地方我会看(特别是如果从发布变化的系统的信息不是很明显):
我发现简单的改变是改变login屏幕的背景 ,或者改变login窗口上的文本 。 什么可能会更强大将是一种方法来采取标准的桌面背景,并作出注释的副本(也许有一些点或文字,以表示已经发生的变化)。 [有谁知道如何做到这一点,或者我应该问它作为一个单独的问题,无论是在这里或在计算器上?]
另一个简单的改变是设置四个ARD字段中的一个,如下所示:
defaults write /Library/Preferences/com.apple.RemoteDesktop Text4 "`date +%Y-%m-%d`"
那么,你怎么知道你的客户是最新的(或者,如果你知道怎么做,你想做什么?)
我不确定这是不是你正在想的,但我也可以分享一下。
如果可以通过在系统上运行terminal命令来判断机器是否是最新的,则可以编写自己的自定义Nagios插件来自动执行检查。 这将涉及在每个系统上使用SSH密钥,以允许nagios以非专用用户的身份login并运行check命令。
我能看到的一个非常简单的方法就是让你的更新在一个预定义的地方留下某种string。 然后在Nagios服务器上用“最新”string创build一个文件。 然后,插件只需要在Nagios服务器上检查“最新”标志的机器标志。 然后,您可以观看在Nagios上传播的更新,并快速查看哪些机器是不是最新的。
如果您想在机器脱机时避免出现大量错误消息,则可以让插件在连接失败时返回警告而不是错误,并将检查的通知设置为不触发警告状态在失败状态。 也许更简单的是,您可以在Nagios GUI中打开和closures支票,以便在需要执行检查而不是继续运行时进行检查。
食物或许是思想。
你可以从这个命令行得到应用程序版本
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
尽pipe并不是每个应用程序都在info.plist文件中使用该标识符
当你的计算机上已经有一个图像用于后台时,这个脚本将设置它并通知login窗口重新加载并显示图像(如果没有人用graphicslogin)。
#!/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