[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
| 固定リンク
「Bash」カテゴリの記事
- [zsh]テンポラリーフォルダをFinderで開く(2024.11.05)
- run commands の書き換え(2024.10.09)
- [bash]タイムアウトさせる(2024.09.16)
- [bash]exiftoolインストール(シングルファイル形式のPKG対応)(2024.07.29)
- パージョンを取得する(defaults , PlistBuddy,plutil)(2024.05.12)
「Chrome」カテゴリの記事
- GoogleChromeでのPDFの表示(2025.01.20)
- [headless]Google Chromeのheadless機能でWEBページをPDFにプリントする(2024.12.30)
- 拡張属性を削除する(“Google Chrome for Testing.app”は壊れているため開けません。 ゴミ箱に入れる必要があります。対応用)(2024.11.24)
- (ChromeDriverのダウンロード) テスト ドライバー ヘッドレスシェルの3点セットを同時にダウンロード(2024.11.24)
- ChromeDriverのダウンロード(2024.11.24)