From b9ff359ec9001088afac1b6c6609e58be62beb92 Mon Sep 17 00:00:00 2001 From: Nathaniel Landau Date: Sun, 21 Jun 2015 12:11:45 -0400 Subject: [PATCH] Now have scripts for flash player and command line tools --- .../install_latest_adobe_flash_player.sh | 336 ++++++++++++++++++ 1 file changed, 336 insertions(+) create mode 100755 setupScripts/install_latest_adobe_flash_player.sh diff --git a/setupScripts/install_latest_adobe_flash_player.sh b/setupScripts/install_latest_adobe_flash_player.sh new file mode 100755 index 0000000..fdff439 --- /dev/null +++ b/setupScripts/install_latest_adobe_flash_player.sh @@ -0,0 +1,336 @@ +#!/usr/bin/env bash + +# ################################################## +# +# This script was taken in its entirety from: +# https://github.com/rtrouton/rtrouton_scripts/ +# +# This script will download a disk image containing the latest Adobe Flash +# Player and install Flash Player using the installer package stored inside +# the downloaded disk image. +# +# How the script works: +# +# 1. Uses curl to download a disk image containing the latest Flash Player +# installer from Adobe's web site +# 2. Renames the downloaded disk image to flash.dmg and stores it in /tmp +# 2. Mounts the disk image silently in /tmp. Disk image will not be visible +# to any logged-in user. +# 3. Installs the latest Flash Player using the installer package stored on +# the disk image +# 4. After installation, unmounts the disk image and removes it from the Mac +# in question. +# +version="1.0.0" # Sets version variable +# +scriptTemplateVersion="1.4.1" # Version of scriptTemplate.sh that this script is based on +# +# HISTORY: +# +# * 2015-06-21 - v1.0.0 - First Creation +# +# ################################################## + +# Provide a variable with the location of this script. +scriptPath="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Source Scripting Utilities +# ----------------------------------- +# These shared utilities provide many functions which are needed to provide +# the functionality in this boilerplate. This script will fail if they can +# not be found. +# ----------------------------------- + +utilsLocation="${scriptPath}/../lib/utils.sh" # Update this path to find the utilities. + +if [ -f "${utilsLocation}" ]; then + source "${utilsLocation}" +else + echo "Please find the file util.sh and add a reference to it in this script. Exiting." + exit 1 +fi + +# trapCleanup Function +# ----------------------------------- +# Any actions that should be taken if the script is prematurely +# exited. Always call this function at the top of your script. +# ----------------------------------- +function trapCleanup() { + echo "" + if is_dir "${tmpDir}"; then + rm -r "${tmpDir}" + fi + die "Exit trapped." # Edit this if you like. +} + +# Set Flags +# ----------------------------------- +# Flags which can be overridden by user input. +# Default values are below +# ----------------------------------- +quiet=0 +printLog=0 +verbose=0 +force=0 +strict=0 +debug=0 +args=() + +# Set Temp Directory +# ----------------------------------- +# Create temp directory with three random numbers and the process ID +# in the name. This directory is removed automatically at exit. +# ----------------------------------- +tmpDir="/tmp/${scriptName}.$RANDOM.$RANDOM.$RANDOM.$$" +(umask 077 && mkdir "${tmpDir}") || { + die "Could not create temporary directory! Exiting." +} + +# Logging +# ----------------------------------- +# Log is only used when the '-l' flag is set. +# +# To never save a logfile change variable to '/dev/null' +# Save to Desktop use: $HOME/Desktop/${scriptBasename}.log +# Save to standard user log location use: $HOME/Library/Logs/${scriptBasename}.log +# ----------------------------------- +logFile="$HOME/Library/Logs/${scriptBasename}.log" + +# Check for Dependencies +# ----------------------------------- +# Arrays containing package dependencies needed to execute this script. +# The script will fail if dependencies are not installed. For Mac users, +# most dependencies can be installed automatically using the package +# manager 'Homebrew'. Mac applications will be installed using +# Homebrew Casks. Ruby and gems via RVM. +# ----------------------------------- +homebrewDependencies=() +caskDependencies=() +gemDependencies=() + +function mainScript() { +############## Begin Script Here ################### +#################################################### + +# invoke verbose usage of commands when set +if $verbose; then v="-v" ; fi + +# Determine OS version +osvers=$(sw_vers -productVersion | awk -F. '{print $2}') + +# Determine current major version of Adobe Flash for use +# with the fileURL variable +flash_major_version=`/usr/bin/curl --silent http://fpdownload2.macromedia.com/get/flashplayer/update/current/xml/version_en_mac_pl.xml | cut -d , -f 1 | awk -F\" '/update version/{print $NF}'` + +# Specify the complete address of the Adobe Flash Player +# disk image + fileURL="http://fpdownload.macromedia.com/get/flashplayer/current/licensing/mac/install_flash_player_"${flash_major_version}"_osx_pkg.dmg" + +flash_dmg="${tmpDir}/flash.dmg" + +if [[ ${osvers} -lt 6 ]]; then + echo "Adobe Flash Player is not available for Mac OS X 10.5.8 or below." +fi + +if [[ ${osvers} -ge 6 ]]; then + + # Download the latest Adobe Flash Player software disk image + + /usr/bin/curl --output "${flash_dmg}" "${fileURL}" + + # Specify a /tmp/flashplayer.XXXX mountpoint for the disk image + + TMPMOUNT=`/usr/bin/mktemp -d ${tmpDir}/flashplayer.XXXX` + + # Mount the latest Flash Player disk image to /tmp/flashplayer.XXXX mountpoint + + hdiutil attach "$flash_dmg" -mountpoint "$TMPMOUNT" -nobrowse -noverify -noautoopen + + pkg_path="$(/usr/bin/find $TMPMOUNT -maxdepth 1 \( -iname \*Flash*\.pkg -o -iname \*Flash*\.mpkg \))" + + # Before installation on Mac OS X 10.7.x and later, the installer's + # developer certificate is checked to see if it has been signed by + # Adobe's developer certificate. Once the certificate check has been + # passed, the package is then installed. + + if [[ ${pkg_path} != "" ]]; then + if [[ ${osvers} -ge 7 ]]; then + signature_check=`/usr/sbin/pkgutil --check-signature "$pkg_path" | awk /'Developer ID Installer/{ print $5 }'` + if [[ ${signature_check} = "Adobe" ]]; then + # Install Adobe Flash Player from the installer package stored inside the disk image + /usr/sbin/installer -dumplog -verbose -pkg "${pkg_path}" -target "/" + fi + fi + + # On Mac OS X 10.6.x, the developer certificate check is not an + # available option, so the package is just installed. + + if [[ ${osvers} -eq 6 ]]; then + # Install Adobe Flash Player from the installer package stored inside the disk image + /usr/sbin/installer -dumplog -verbose -pkg "${pkg_path}" -target "/" + fi + fi + + # Clean-up + + # Unmount the Flash Player disk image from /tmp/flashplayer.XXXX + + /usr/bin/hdiutil detach "$TMPMOUNT" + + # Remove the /tmp/flashplayer.XXXX mountpoint + + rm -rf $v "$TMPMOUNT" + + # Remove the downloaded disk image + + rm -rf $v "$flash_dmg" +fi + +#################################################### +############### End Script Here #################### +} + +############## Begin Options and Usage ################### + + +# Print usage +usage() { + echo -n "${scriptName} [OPTION]... [FILE]... + +This script was taken in its entirety from: +https://github.com/rtrouton/rtrouton_scripts/ + +This script will download a disk image containing the latest Adobe Flash +Player and install Flash Player using the installer package stored inside +the downloaded disk image. + +How the script works: + +1. Uses curl to download a disk image containing the latest Flash Player + installer from Adobe's web site +2. Renames the downloaded disk image to flash.dmg and stores it in /tmp +2. Mounts the disk image silently in /tmp. Disk image will not be visible + to any logged-in user. +3. Installs the latest Flash Player using the installer package stored on + the disk image +4. After installation, unmounts the disk image and removes it from the Mac + in question. + + Options: + + -q, --quiet Quiet (no output) + -l, --log Print log to file + -s, --strict Exit script with null variables. i.e 'set -o nounset' + -v, --verbose Output more information. (Items echoed to 'verbose') + -d, --debug Runs script in BASH debug mode (set -x) + -h, --help Display this help and exit + --version Output version information and exit +" +} + +# Iterate over options breaking -ab into -a -b when needed and --foo=bar into +# --foo bar +optstring=h +unset options +while (($#)); do + case $1 in + # If option is of type -ab + -[!-]?*) + # Loop over each character starting with the second + for ((i=1; i < ${#1}; i++)); do + c=${1:i:1} + + # Add current char to options + options+=("-$c") + + # If option takes a required argument, and it's not the last char make + # the rest of the string its argument + if [[ $optstring = *"$c:"* && ${1:i+1} ]]; then + options+=("${1:i+1}") + break + fi + done + ;; + + # If option is of type --foo=bar + --?*=*) options+=("${1%%=*}" "${1#*=}") ;; + # add --endopts for -- + --) options+=(--endopts) ;; + # Otherwise, nothing special + *) options+=("$1") ;; + esac + shift +done +set -- "${options[@]}" +unset options + +# Print help if no arguments were passed. +# Uncomment to force arguments when invoking the script +# [[ $# -eq 0 ]] && set -- "--help" + +# Read the options and set stuff +while [[ $1 = -?* ]]; do + case $1 in + -h|--help) usage >&2; safeExit ;; + --version) echo "$(basename $0) ${version}"; safeExit ;; + -u|--username) shift; username=${1} ;; + -p|--password) shift; echo "Enter Pass: "; stty -echo; read PASS; stty echo; + echo ;; + -v|--verbose) verbose=true ;; + -l|--log) printLog=1 ;; + -q|--quiet) quiet=1 ;; + -s|--strict) strict=1;; + -d|--debug) debug=1;; + --force) force=1 ;; + --endopts) shift; break ;; + *) die "invalid option: '$1'." ;; + esac + shift +done + +# Store the remaining part as arguments. +args+=("$@") + +############## End Options and Usage ################### + + + + +# ############# ############# ############# +# ## TIME TO RUN THE SCRIPT ## +# ## ## +# ## You shouldn't need to edit anything ## +# ## beneath this line ## +# ## ## +# ############# ############# ############# + +# Trap bad exits with your cleanup function +trap trapCleanup EXIT INT TERM + +# Set IFS to preferred implementation +IFS=$'\n\t' + +# Exit on error. Append '||true' when you run the script if you expect an error. +set -o errexit + +# Run in debug mode, if set +if [ "${debug}" == "1" ]; then + set -x +fi + +# Exit on empty variable +if [ "${strict}" == "1" ]; then + set -o nounset +fi + +# Bash will remember & return the highest exitcode in a chain of pipes. +# This way you can catch the error in case mysqldump fails in `mysqldump |gzip`, for example. +set -o pipefail + +# Invoke the checkDependenices function to test for Bash packages +# checkDependencies + +# Run your script +mainScript + +safeExit # Exit cleanly \ No newline at end of file