« [Logs]ローカルログファイルで削除可能なログファイルを削除 | トップページ | [bash]全てのローカルアカウントのゴミ箱をからにする »

[bash]全ローカルユーザーに同じ処理(クロームインストール)

【スクリプトエディタで開く】|

#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe

########################################
###管理者インストールしているか?チェック
USER_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行したユーザーは:$USER_WHOAMI"
if [ "$USER_WHOAMI" != "root" ]; then
  /bin/echo "このスクリプトを実行するには管理者権限が必要です。"
  /bin/echo "sudo で実行してください"
  exit 1
else
  ###実行しているユーザー名
  SUDO_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
  /bin/echo "実行ユーザー:" "$SUDO_USER"
fi

########################################
###全ユーザーで使う起動時に削除する項目
/bin/mkdir -p "/private/tmp/TemporaryItems/Trash"
LOCAL_TMP_DIR=$(/usr/bin/mktemp -d "/private/tmp/TemporaryItems/XXXXXXXX")
/bin/chmod -Rf 777 "/private/tmp/TemporaryItems"
/bin/echo "LOCAL_TMP_DIR:CURL:" "$LOCAL_TMP_DIR"
### CPUタイプでの分岐
ARCHITEC=$(/usr/bin/arch)
/bin/echo "Running on $ARCHITEC"
if [ "$ARCHITEC" == "arm64" ]; then
  if ! /usr/bin/curl -L -o "$LOCAL_TMP_DIR/googlechrome.dmg" 'https://dl.google.com/dl/chrome/mac/universal/stable/gcea/googlechrome.dmg' --connect-timeout 20; then
    echo "ファイルのダウンロードに失敗しました"
    exit 1
  fi
else
  if ! /usr/bin/curl -L -o "$LOCAL_TMP_DIR/googlechrome.dmg" 'https://dl.google.com/dl/chrome/mac/universal/stable/gcea/googlechrome.dmg' --connect-timeout 20; then
    echo "ファイルのダウンロードに失敗しました"
    exit 1
  fi
fi
##全ユーザー実行可能にしておく
/bin/chmod 755 "$LOCAL_TMP_DIR/googlechrome.dmg"

########################################
###アプリケーションの終了
###コンソールユーザーにのみ処理する
CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
/bin/echo "CONSOLE_USER:$CONSOLE_USER"
if [ -z "$CONSOLE_USER" ]; then
  /bin/echo "コンソールユーザーが無い=電源入れてログインウィンドウ状態"
else
  /usr/bin/sudo -u "$CONSOLE_USER" /usr/bin/osascript -e "tell application id \"com.google.Chrome\" to quit"
fi
/bin/sleep 2
##念の為 KILLもする
/usr/bin/killall "Google Chrome" 2>/dev/null
/usr/bin/killall "Google Chrome Helper" 2>/dev/null

########################################
###ローカルドメインに対しての処理
function DO_MOVE_TO_TRASH_SUDO() {
  if [ -e "$1" ]; then
    TRASH_DIR=$(/usr/bin/mktemp -d "/private/tmp/TemporaryItems/Trash/XXXXXXXX")
    /usr/bin/sudo /bin/chmod 777 "$TRASH_DIR"
    /usr/bin/sudo /bin/mv "$1" "$TRASH_DIR"
  fi
}
DO_MOVE_TO_TRASH_SUDO "/Applications/Google Chrome.app"

DO_MOVE_TO_TRASH_SUDO "/Library/Caches/com.google.SoftwareUpdate.0"
DO_MOVE_TO_TRASH_SUDO "/Library/Caches/com.google.SoftwareUpdate"
##ここはお好みで
DO_MOVE_TO_TRASH_SUDO "/Library/Google"
DO_MOVE_TO_TRASH_SUDO "/Library/Application Support/Google"

DO_MOVE_TO_TRASH_SUDO "/private/tmp/com.google.Keystone"

########################################
#####古いファイルをゴミ箱に LaunchCtl
function DO_MOVE_TO_TRASH_LAUNCHCTL() {
  if [ -e "$1" ]; then
    /usr/bin/sudo /bin/launchctl stop -w "$1"
    /usr/bin/sudo /bin/launchctl unload -w "$1"
    #### bootoutするのか?はお好みで
    /usr/bin/sudo /bin/launchctl bootout "$1"
    TRASH_DIR=$(/usr/bin/mktemp -d "$HOME/.Trash/XXXXXXXX")
    /usr/bin/sudo /bin/chmod 777 "$TRASH_DIR"
    /usr/bin/sudo /bin/mv "$1" "$TRASH_DIR"
  fi
}
DO_MOVE_TO_TRASH_LAUNCHCTL "/Library/LaunchAgents/com.google.keystone.xpcservice.plist"
DO_MOVE_TO_TRASH_LAUNCHCTL "/Library/LaunchAgents/com.google.keystone.agent.plist"
DO_MOVE_TO_TRASH_LAUNCHCTL "/Library/LaunchDaemons/com.google.keystone.daemon.plist"

########################################
###ローカルのユーザーアカウントを取得
TEXT_RESULT=$(/usr/bin/dscl localhost -list /Local/Default/Users PrimaryGroupID | /usr/bin/awk '$2 == 20 { print $1 }')

###リストにする
read -d '\\n' -r -a LIST_USER <<<"$TEXT_RESULT"

###リスト内の項目数
NUM_CNT=${#LIST_USER[@]}
/bin/echo "ユーザー数:" "$NUM_CNT"
########################################
##リストの内容を順番に処理
for ITEM_LIST in "${LIST_USER[@]}"; do
  /bin/echo "LIST_USER:MKDIR:" "${ITEM_LIST}"
  ##ライブラリの不可視属性を解除
  /usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/chflags nohidden /Users/"${ITEM_LIST}"/Library
  /usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/SetFile -a v /Users/"${ITEM_LIST}"/Library
  ##ユーザーアプリケーションフォルダを作る
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/mkdir -p /Users/"${ITEM_LIST}"/Applications
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 700 /Users/"${ITEM_LIST}"/Applications
  /usr/bin/sudo -u "${ITEM_LIST}" /usr/sbin/chown "${ITEM_LIST}" /Users/"${ITEM_LIST}"/Applications
  /usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/touch /Users/"${ITEM_LIST}"/Applications/.localized
  ##ユーザーユーティリティフォルダを作る
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/mkdir -p /Users/"${ITEM_LIST}"/Applications/Utilities
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 755 /Users/"${ITEM_LIST}"/Applications/Utilities
  /usr/bin/sudo -u "${ITEM_LIST}" /usr/sbin/chown "${ITEM_LIST}" /Users/"${ITEM_LIST}"/Applications/Utilities
  /usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/touch /Users/"${ITEM_LIST}"/Applications/Utilities/.localized
  ## Managed Itemsフォルダを作る
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/mkdir -p "/Users/${ITEM_LIST}/Library/Managed Items"
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 755 "/Users/${ITEM_LIST}/Library/Managed Items"
  /usr/bin/sudo -u "${ITEM_LIST}" /usr/sbin/chown "${ITEM_LIST}" "/Users/${ITEM_LIST}/Library/Managed Items"
  /usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/touch "/Users/${ITEM_LIST}//Library/Managed Items/.localized"
  ##アクセス権チェック
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 700 /Users/"${ITEM_LIST}"/Library
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 700 /Users/"${ITEM_LIST}"/Movies
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 700 /Users/"${ITEM_LIST}"/Music
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 700 /Users/"${ITEM_LIST}"/Pictures
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 700 /Users/"${ITEM_LIST}"/Downloads
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 700 /Users/"${ITEM_LIST}"/Documents
  /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 700 /Users/"${ITEM_LIST}"/Desktop
  ##全ローカルユーザーに対して実施したい処理があれば追加する

done

for ITEM_LIST in "${LIST_USER[@]}"; do
  /bin/echo "LIST_USER:CLEAR:" "${ITEM_LIST}"
  #####古いファイルをゴミ箱に  USER
  function DO_MOVE_TO_TRASH() {
    if [ -e "$1" ]; then
      TRASH_DIR=$(/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/mktemp -d "/Users/${ITEM_LIST}/.Trash/XXXXXXXX")
      /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 777 "$TRASH_DIR"
      /usr/bin/sudo -u "${ITEM_LIST}" /bin/mv "$1" "$TRASH_DIR"
    fi
  }
  #####古いファイルをゴミ箱に
  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Applications/Google Chrome.app"

  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Library/Application Support/Google/GoogleUpdater"
  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Library/Application Support/Google/Chrome/GrShaderCache"
  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Library/Application Support/Google/Chrome/Guest Profile"
  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Library/Application Support/Google/Chrome/ShaderCache"

  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Library/Caches/com.google.Keystone"
  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Library/Caches/com.google.SoftwareUpdate"
  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Library/Caches/Google/Chrome"
  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Library/Google"
  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Library/HTTPStorages/com.google.Keystone"
  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Library/Receipts/com.google.Chrome.bom"
  DO_MOVE_TO_TRASH "/Users/${ITEM_LIST}/Library/Receipts/com.google.Chrome.plist"

  ###############/var/folde TemporaryDirectory
  MKTEMP_DIR=$(/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/mktemp -d)
  TEMP_DIR_T="$(/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/dirname "$MKTEMP_DIR")"
  function DO_MOVE_TO_TRASH_T() {
    if [ -e "$1" ]; then
      TRASH_DIR=$(/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/mktemp -d "/Users/${ITEM_LIST}/.Trash/XXXXXXXX")
      /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 777 "$TRASH_DIR"
      /usr/bin/sudo -u "${ITEM_LIST}" /bin/mv "$1" "$TRASH_DIR"
    fi
  }
  #####古いファイルをゴミ箱に
  DO_MOVE_TO_TRASH_T "$TEMP_DIR_T/Google Chrome"
  DO_MOVE_TO_TRASH_T "$TEMP_DIR_T/Google Chrome Helper"
  DO_MOVE_TO_TRASH_T "$TEMP_DIR_T/Google Chrome Helper (GPU)"
  DO_MOVE_TO_TRASH_T "$TEMP_DIR_T/Google Chrome Helper (Renderer)"

  TEMP_DIR="$(/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/dirname "$TEMP_DIR_T")"
  TEMP_DIR_C="${TEMP_DIR}/C"

  function DO_MOVE_TO_TRASH_C() {
    if [ -e "$1" ]; then
      TRASH_DIR=$(/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/mktemp -d "/Users/${ITEM_LIST}/.Trash/XXXXXXXX")
      /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 777 "$TRASH_DIR"
      /usr/bin/sudo -u "${ITEM_LIST}" /bin/mv "$1" "$TRASH_DIR"
    fi
  }
  #####古いファイルをゴミ箱に
  DO_MOVE_TO_TRASH_C "$TEMP_DIR_C/com.google.Chrome"
  DO_MOVE_TO_TRASH_C "$TEMP_DIR_C/com.google.Chrome.Helper"
  DO_MOVE_TO_TRASH_C "$TEMP_DIR_C/com.google.Chrome.Helper-(GPU)"
  DO_MOVE_TO_TRASH_C "$TEMP_DIR_C/com.google.Chrome.Helper-(Renderer)"
done

for ITEM_LIST in "${LIST_USER[@]}"; do
  /bin/echo "LIST_USER:LUNCHAGT:" "${ITEM_LIST}"
  function DO_MOVE_TO_TRASH_LAUNCHAGENT() {
    if [ -e "$1" ]; then
      /usr/bin/sudo -u "${ITEM_LIST}" /bin/launchctl stop -w "$1"
      /usr/bin/sudo -u "${ITEM_LIST}" /bin/launchctl unload -w "$1"
      ###bootoutはお好みで
      /usr/bin/sudo -u "${ITEM_LIST}" /bin/launchctl bootout "$1"
      TRASH_DIR=$(/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/mktemp -d "$HOME/.Trash/XXXXXXXX")
      /usr/bin/sudo -u "${ITEM_LIST}" /bin/chmod 777 "$TRASH_DIR"
      /usr/bin/sudo -u "${ITEM_LIST}" /bin/mv "$1" "$TRASH_DIR"
    fi
  }
    ####LaunchAgents 停止 削除
  DO_MOVE_TO_TRASH_LAUNCHAGENT "/Users/${ITEM_LIST}/Library/LaunchAgents/com.google.keystone.agent.plist"
  DO_MOVE_TO_TRASH_LAUNCHAGENT "/Users/${ITEM_LIST}/Library/LaunchAgents/com.google.keystone.xpcservice.plist"

done

for ITEM_LIST in "${LIST_USER[@]}"; do
  /bin/echo "LIST_USER:DITTO:" "${ITEM_LIST}"

/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/hdiutil attach  "$LOCAL_TMP_DIR/googlechrome.dmg" -noverify -nobrowse -noautoopen
sleep 2
/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/ditto "/Volumes/Google Chrome/Google Chrome.app"  "/Users/${ITEM_LIST}/Applications/Google Chrome.app"
sleep 2
/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/hdiutil detach /Volumes/Google Chrome -force

done

for ITEM_LIST in "${LIST_USER[@]}"; do
  /bin/echo "LIST_USER:DOCK" "${ITEM_LIST}"
  PLIST_DICT="<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Users/${ITEM_LIST}/Applications/Google Chrome.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>"
  /usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/defaults write com.apple.dock persistent-apps -array-add "$PLIST_DICT"
done

###Dock 再起動
/usr/bin/killall Dock

/bin/echo "処理終了しました"

exit 0

|

« [Logs]ローカルログファイルで削除可能なログファイルを削除 | トップページ | [bash]全てのローカルアカウントのゴミ箱をからにする »

Bash」カテゴリの記事

Chrome」カテゴリの記事