Here is the EA we use. Not sure where I got it but I didn't create it. We haven't had any issues with it or the older script.
#!/bin/bash
# This script is used as an extension attribute and compares
# the IT installer version on the Zoom site vs what the user is running
if [ ! -d "/Applications/zoom.us.app" ]; then
echo "<result>Not Installed</result>"
exit 0
else
# Determine current OS version to pass to user string
OSvers_URL=$( sw_vers -productVersion | sed 's/[.]/_/g' )
# Create useragent to pass into curl command
userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X ${OSvers_URL}) AppleWebKit/535.6.2 (KHTML, like Gecko) Version/5.2 Safari/535.6.2"
# Pull current available version of Zoom from their site
latestver=`/usr/bin/curl -s -A "$userAgent" https://zoom.us/download | grep 'ZoomInstallerIT.pkg' | awk -F'/' '{print $3}'`
# Get current version installed on computer
installedVersion=$( defaults read /Applications/zoom.us.app/Contents/Info.plist CFBundleVersion )
# Compare zoom version vs installed version, print result
if [ "$latestver" == "$installedVersion" ]; then
echo "<result>Latest</result>"
exit 0
else
echo "<result>Old</result>"
exit 0
fi
fi
Hey Loic,
Lee R in the MacAdmins Slack recently shared this updated one with me that works:
#!/bin/bash
# This script runs within a policy is scoped to devices listed as 'Old' in the Extension Attribute.
OSvers_URL=$( sw_vers -productVersion | sed 's/[.]/_/g' )
userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X ${OSvers_URL}) AppleWebKit/535.6.2 (KHTML, like Gecko) Version/5.2 Safari/535.6.2"
# Get the latest version of Reader available from Zoom page.
latestver=`/usr/bin/curl -s -A "$userAgent" https://zoom.us/download | grep 'ZoomInstallerIT.pkg' | awk -F'/' '{print $3}'`
ulatestver=`/usr/bin/curl -s -A "$userAgent" https://support.zoom.us/hc/en-us/articles/201361963-Release-notes-for-macOS | grep 'version 5.' | head -1 | sed 's/^.*5./5./' | tr -d ' ' | sed -r 's/[(]+/./g' | cut -f1 -d")"`
echo "$latestver"
echo "$ulatestver"
echo "Installing version ${latestver}";
url="https://zoom.us/client/${ulatestver}/ZoomInstallerIT.pkg"
/usr/bin/curl -L -o /var/tmp/ZoomInstallerIT.pkg ${url};
res=$?
echo "$res"
if test "$res" != "0"; then
echo "the curl command failed with: $res"
exit 1
else
/usr/sbin/installer -pkg /var/tmp/ZoomInstallerIT.pkg -target /;
exit 0
fi
What machine you running this on? intel or apple silicone?
How recent did you get this?
I ask because i used a similar script for determining the latest version and it no longer works.
I had tried the same thing for zoominstaller and also for the update page separately (also tested your script just now), and they all come up with no info.
When i dug into the HTML, it seems to make sense since the versions are actually called via JS - if you curled the page itself you wont be able to find "ZoomInstallerIT", at least on my M1 max machine running 12.5.
Can you show screenshots that it works as expected for you?
W:~ X$ OSvers_URL=$( sw_vers -productVersion | sed 's/[.]/_/g' )
W:~ X$ userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X ${OSvers_URL}) AppleWebKit/535.6.2 (KHTML, like Gecko) Version/5.2 Safari/535.6.2"
W:~ X$ latestver=`/usr/bin/curl -s -A "$userAgent" https://zoom.us/download | grep 'ZoomInstallerIT.pkg' | awk -F'/' '{print $3}'`
W:~ X$ echo $latestvers
W:~ X$ ulatestver=`/usr/bin/curl -s -A "$userAgent" https://support.zoom.us/hc/en-us/articles/201361963-Release-notes-for-macOS | grep 'version 5.' | head -1 | sed 's/^.*5./5./' | tr -d ' ' | sed -r 's/[(]+/./g' | cut -f1 -d")"`
W:~ X$ echo $ulatestvers
W:~ X$ echo "$ulatestvers"
W:~ X$
What machine you running this on? intel or apple silicone?
How recent did you get this?
I ask because i used a similar script for determining the latest version and it no longer works.
I had tried the same thing for zoominstaller and also for the update page separately (also tested your script just now), and they all come up with no info.
When i dug into the HTML, it seems to make sense since the versions are actually called via JS - if you curled the page itself you wont be able to find "ZoomInstallerIT", at least on my M1 max machine running 12.5.
Can you show screenshots that it works as expected for you?
W:~ X$ OSvers_URL=$( sw_vers -productVersion | sed 's/[.]/_/g' )
W:~ X$ userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X ${OSvers_URL}) AppleWebKit/535.6.2 (KHTML, like Gecko) Version/5.2 Safari/535.6.2"
W:~ X$ latestver=`/usr/bin/curl -s -A "$userAgent" https://zoom.us/download | grep 'ZoomInstallerIT.pkg' | awk -F'/' '{print $3}'`
W:~ X$ echo $latestvers
W:~ X$ ulatestver=`/usr/bin/curl -s -A "$userAgent" https://support.zoom.us/hc/en-us/articles/201361963-Release-notes-for-macOS | grep 'version 5.' | head -1 | sed 's/^.*5./5./' | tr -d ' ' | sed -r 's/[(]+/./g' | cut -f1 -d")"`
W:~ X$ echo $ulatestvers
W:~ X$ echo "$ulatestvers"
W:~ X$
You have a typo: you're calling something to be stored in $latestver and trying to echo $latestvers
Please see modified version of this script:
- Change url logic prev url doesn't work
-Add scenario with proxy (don't forget to modify $proxycheck and $curlopt variables if needed
#!/bin/sh
#####################################################################################################
#
# ABOUT THIS PROGRAM
#
# NAME
# ZoomInstall.sh -- Installs or updates Zoom
#
# SYNOPSIS
# sudo ZoomInstall.sh
#
####################################################################################################
#
# HISTORY
#
# Version: 1.1
#
# 1.1 - Shannon Johnson, 27.9.2019
# Updated for new zoom numbering scheme
# Fixed the repeated plist modifications
#
# 1.0 - Shannon Johnson, 28.9.2018
# (Adapted from the FirefoxInstall.sh script by Joe Farage, 18.03.2015)
#
####################################################################################################
# Script to download and install Zoom.
# Only works on Intel systems.
#
proxycheck=$(/usr/bin/dig +short 'put your wpad file, example wpad.domain')
if [ -z "$proxycheck" ]; then
echo "computer is not connected to internal network, continue..."
# Set preferences
#hdvideo="true"
ssodefault="true"
ssohost="psu.zoom.us"
# choose language (en-US, fr, de)
lang=""
# CHECK TO SEE IF A VALUE WAS PASSED IN PARAMETER 1 AND, IF SO, ASSIGN TO "lang"
if [ "$4" != "" ] && [ "$lang" == "" ]; then
lang=$4
else
lang="en-US"
fi
pkgfile="ZoomInstallerIT.pkg"
plistfile="us.zoom.config.plist"
logfile="/Library/Logs/ZoomInstallScript.log"
# Are we running on Intel?
#if [ '`/usr/bin/uname -p`'="i386" -o '`/usr/bin/uname -p`'="x86_64" ]; then
## Get OS version and adjust for use with the URL string
OSvers_URL=$( sw_vers -productVersion | sed 's/[.]/_/g' )
## Set the User Agent string for use with curl
userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X ${OSvers_URL}) AppleWebKit/535.6.2 (KHTML, like Gecko) Version/5.2 Safari/535.6.2"
# Get the latest version of Reader available from Zoom page.
#latestver=`/usr/bin/curl -s -A "$userAgent" https://zoom.us/download | grep 'ZoomInstallerIT.pkg' | awk -F'/' '{print $3}'`
latestver=`/usr/bin/curl -si "https://zoom.us/client/latest/ZoomInstallerIT.pkg" | awk '/location: /{print $2}' | awk -F'/' '{print $5}'`
echo "Latest Version is: $latestver"
# Get the version number of the currently-installed Zoom, if any.
if [ -e "/Applications/zoom.us.app" ]; then
currentinstalledver=`/usr/bin/defaults read /Applications/zoom.us.app/Contents/Info CFBundleVersion | sed -e 's/0 //g' -e 's/(//g' -e 's/)//g'`
echo "Current installed version is: $currentinstalledver"
if [ ${latestver} = ${currentinstalledver} ]; then
echo "Zoom is current. Exiting"
exit 0
fi
else
currentinstalledver="none"
echo "Zoom is not installed"
fi
#url="https://zoom.us/client/${latestver}/ZoomInstallerIT.pkg"
url="https://zoom.us/client/latest/ZoomInstallerIT.pkg"
echo "Latest version of the URL is: $url"
echo "`date`: Download URL: $url" >> ${logfile}
# Compare the two versions, if they are different or Zoom is not present then download and install the new version.
if [ "${currentinstalledver}" != "${latestver}" ]; then
# Construct the plist file for preferences
echo "<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>
<!DOCTYPE plist PUBLIC \\"-//Apple//DTD PLIST 1.0//EN\\" \\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\\">
<plist version=\\"1.0\\">
<dict>
<key>nogoogle</key>
<string>1</string>
<key>nofacebook</key>
<string>1</string>
<key>ZAutoJoinVoip</key>
<true/>" > /tmp/${plistfile}
if [ "${ssohost}" != "" ]; then
echo "
<key>ZAutoSSOLogin</key>
<true/>
<key>ZSSOHost</key>
<string>$ssohost</string>" >> /tmp/${plistfile}
fi
#echo "<key>ZAutoFullScreenWhenViewShare</key>
# <true/>
# <key>ZAutoFitWhenViewShare</key>
# <true/>" >> /tmp/${plistfile}
#if [ "${hdvideo}" == "true" ]; then
# echo "<key>ZUse720PByDefault</key>
# <true/>" >> /tmp/${plistfile}
#else
# echo "<key>ZUse720PByDefault</key>
# <false/>" >> /tmp/${plistfile}
#fi
echo "<key>ZRemoteControlAllApp</key>
<true/>
</dict>
</plist>" >> /tmp/${plistfile}
# Download and install new version
/bin/echo "`date`: Current Zoom version: ${currentinstalledver}" >> ${logfile}
/bin/echo "`date`: Available Zoom version: ${latestver}" >> ${logfile}
/bin/echo "`date`: Downloading newer version." >> ${logfile}
/usr/bin/curl -sLo /tmp/${pkgfile} ${url}
/bin/echo "`date`: Installing PKG..." >> ${logfile}
/usr/sbin/installer -allowUntrusted -pkg /tmp/${pkgfile} -target /
/bin/sleep 10
/bin/echo "`date`: Deleting downloaded PKG." >> ${logfile}
/bin/rm /tmp/${pkgfile}
#double check to see if the new version got updated
newlyinstalledver=`/usr/bin/defaults read /Applications/zoom.us.app/Contents/Info CFBundleVersion`
if [ "${latestver}" = "${newlyinstalledver}" ]; then
/bin/echo "`date`: SUCCESS: Zoom has been updated to version ${newlyinstalledver}" >> ${logfile}
# /Library/Application\\ Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType hud -title "Zoom Installed" -description "Zoom has been updated." &
else
/bin/echo "`date`: ERROR: Zoom update unsuccessful, version remains at ${currentinstalledver}." >> ${logfile}
/bin/echo "--" >> ${logfile}
exit 1
fi
# If Zoom is up to date already, just log it and exit.
else
/bin/echo "`date`: Zoom is already up to date, running ${currentinstalledver}." >> ${logfile}
/bin/echo "--" >> ${logfile}
fi
#else
# /bin/echo "`date`: ERROR: This script is for Intel Macs only." >> ${logfile}
#fi
exit 0
else
echo "computer is inside internal network, proxy is ${proxycheck}, continue"
curlopt="-x 'your wpad file':'your port'"
# Set preferences
#hdvideo="true"
ssodefault="true"
ssohost="psu.zoom.us"
# choose language (en-US, fr, de)
lang=""
# CHECK TO SEE IF A VALUE WAS PASSED IN PARAMETER 1 AND, IF SO, ASSIGN TO "lang"
if [ "$4" != "" ] && [ "$lang" == "" ]; then
lang=$4
else
lang="en-US"
fi
pkgfile="ZoomInstallerIT.pkg"
plistfile="us.zoom.config.plist"
logfile="/Library/Logs/ZoomInstallScript.log"
# Are we running on Intel?
#if [ '`/usr/bin/uname -p`'="i386" -o '`/usr/bin/uname -p`'="x86_64" ]; then
## Get OS version and adjust for use with the URL string
OSvers_URL=$( sw_vers -productVersion | sed 's/[.]/_/g' )
## Set the User Agent string for use with curl
userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X ${OSvers_URL}) AppleWebKit/535.6.2 (KHTML, like Gecko) Version/5.2 Safari/535.6.2"
# Get the latest version of Reader available from Zoom page.
#latestver=`/usr/bin/curl ${curlopt} -s -A "$userAgent" https://zoom.us/download | grep 'ZoomInstallerIT.pkg' | awk -F'/' '{print $3}'`
latestver=`/usr/bin/curl -si "https://zoom.us/client/latest/ZoomInstallerIT.pkg" | awk '/location: /{print $2}' | awk -F'/' '{print $5}'`
echo "Latest Version is: $latestver"
# Get the version number of the currently-installed Zoom, if any.
if [ -e "/Applications/zoom.us.app" ]; then
currentinstalledver=`/usr/bin/defaults read /Applications/zoom.us.app/Contents/Info CFBundleVersion | sed -e 's/0 //g' -e 's/(//g' -e 's/)//g'`
echo "Current installed version is: $currentinstalledver"
if [ ${latestver} = ${currentinstalledver} ]; then
echo "Zoom is current. Exiting"
exit 0
fi
else
currentinstalledver="none"
echo "Zoom is not installed"
fi
#url="https://zoom.us/client/${latestver}/ZoomInstallerIT.pkg"
url="https://zoom.us/client/latest/ZoomInstallerIT.pkg"
echo "Latest version of the URL is: $url"
echo "`date`: Download URL: $url" >> ${logfile}
# Compare the two versions, if they are different or Zoom is not present then download and install the new version.
if [ "${currentinstalledver}" != "${latestver}" ]; then
# Construct the plist file for preferences
echo "<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>
<!DOCTYPE plist PUBLIC \\"-//Apple//DTD PLIST 1.0//EN\\" \\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\\">
<plist version=\\"1.0\\">
<dict>
<key>nogoogle</key>
<string>1</string>
<key>nofacebook</key>
<string>1</string>
<key>ZAutoJoinVoip</key>
<true/>" > /tmp/${plistfile}
if [ "${ssohost}" != "" ]; then
echo "
<key>ZAutoSSOLogin</key>
<true/>
<key>ZSSOHost</key>
<string>$ssohost</string>" >> /tmp/${plistfile}
fi
#echo "<key>ZAutoFullScreenWhenViewShare</key>
# <true/>
# <key>ZAutoFitWhenViewShare</key>
# <true/>" >> /tmp/${plistfile}
#if [ "${hdvideo}" == "true" ]; then
# echo "<key>ZUse720PByDefault</key>
# <true/>" >> /tmp/${plistfile}
#else
# echo "<key>ZUse720PByDefault</key>
# <false/>" >> /tmp/${plistfile}
#fi
echo "<key>ZRemoteControlAllApp</key>
<true/>
</dict>
</plist>" >> /tmp/${plistfile}
# Download and install new version
/bin/echo "`date`: Current Zoom version: ${currentinstalledver}" >> ${logfile}
/bin/echo "`date`: Available Zoom version: ${latestver}" >> ${logfile}
/bin/echo "`date`: Downloading newer version." >> ${logfile}
/usr/bin/curl ${curlopt} -sLo /tmp/${pkgfile} ${url}
/bin/echo "`date`: Installing PKG..." >> ${logfile}
/usr/sbin/installer -allowUntrusted -pkg /tmp/${pkgfile} -target /
/bin/sleep 10
/bin/echo "`date`: Deleting downloaded PKG." >> ${logfile}
/bin/rm /tmp/${pkgfile}
#double check to see if the new version got updated
newlyinstalledver=`/usr/bin/defaults read /Applications/zoom.us.app/Contents/Info CFBundleVersion`
if [ "${latestver}" = "${newlyinstalledver}" ]; then
/bin/echo "`date`: SUCCESS: Zoom has been updated to version ${newlyinstalledver}" >> ${logfile}
# /Library/Application\\ Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType hud -title "Zoom Installed" -description "Zoom has been updated." &
else
/bin/echo "`date`: ERROR: Zoom update unsuccessful, version remains at ${currentinstalledver}." >> ${logfile}
/bin/echo "--" >> ${logfile}
exit 1
fi
# If Zoom is up to date already, just log it and exit.
else
/bin/echo "`date`: Zoom is already up to date, running ${currentinstalledver}." >> ${logfile}
/bin/echo "--" >> ${logfile}
fi
#else
# /bin/echo "`date`: ERROR: This script is for Intel Macs only." >> ${logfile}
#fi
exit 0
fi