Admin SetUp

MacOS アクセント記号等 欧文系の文字の出し方

1:キーボード>入力ソースの設定
2:キーボードビューアー
3−1:入力:入力組み合わせ
3−2:入力:キー組み合わせ



1:キーボード>入力ソースの設定

12_20241110141101

22_20241110141101

システム設定の場合は
キーボード
テキスト入力
入カソース
202411100212211_1430x940

入力ソースを追加します

32

ABCとABC拡張は入れておきましょう

422

これで基本設定はできました

52



2:キーボードビューアー

入力ソースによって
オプションキーを押下したときの
キーボードの組み合わせが変わります

ABC
202411100206231_994x9232

ABC拡張
202411100206531_1253x10632



3−1:入力:入力組み合わせ

入力ソースをABC拡張にします
202411100218131_427x131

オプションキーを押しながら
Wの位置のキーを押下すると
肌色表示の上カンマが出ます これが組み合わせになる発音記号部分です

202411100146001_1920x10802

続けてaをタイプすると
発音記号となって入力されます
Photo_20241110142101

基本はここまでですので
慣れるまでの間はキーボードビューアをスクリーンショット等に撮影して
出しておくとわかりやすいでしょう


キーボード、入力ソースによって
『コントロールキー』を押したときの組み合わせが変わります
入力したい地方の入力ソースをあらかじめ設定しておくと
入力が便利になります
ABC
Abc
ABC拡張

Photo_20241110142401

|

[macos15]ターミナル sudo でタッチIDを有効にする

こちらの記事を参考にした
Use Jamf Self Service to Enable TouchID for sudo
https://mostlymac.blog/2022/03/01/use-jamf-self-service-to-enable-touchid-for-sudo/

初期内容
authsufficientpam_tid.so
   
authincludesudo_local
authsufficientpam_smartcard.so
authrequiredpam_opendirectory.so
accountrequiredam_permit.so
passwordrequiredpam_deny.so
sessionrequiredpam_permit.so
macOS15時点

サンプルコード

サンプルソース(参考)
行番号ソース
001#!/bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003#
004#参考
005# https://mostlymac.blog/
006#################################################
007###管理者インストールしているか?チェック
008USER_WHOAMI=$(/usr/bin/whoami)
009/bin/echo "実行したユーザーは:$USER_WHOAMI"
010if [ "$USER_WHOAMI" != "root" ]; then
011  /bin/echo "このスクリプトを実行するには管理者権限が必要です。"
012  /bin/echo "sudo で実行してください"
013  ### path to me
014  SCRIPT_PATH="${BASH_SOURCE[0]}"
015  /bin/echo "/usr/bin/sudo \"$SCRIPT_PATH\""
016  /bin/echo "↑を実行してください"
017  exit 1
018else
019  ###実行しているユーザー名
020  CURRENT_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
021  /bin/echo "実行ユーザー:" "$CURRENT_USER"
022  ###STAT
023  STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
024  /bin/echo "STAT_USR(console): $STAT_USR"
025  ###UID
026  USER_ID=$(/usr/bin/id -u "$STAT_USR")
027  /bin/echo "UID: " "$USER_ID"
028fi
029###コンソールユーザー CONSOLE_USERはFinderでログインしていないと出ない
030CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
031if [ -z "$CONSOLE_USER" ]; then
032  /bin/echo "コンソールユーザーが無い=電源入れてログインウィンドウ状態"
033else
034  /bin/echo "コンソールユーザー:" "$CONSOLE_USER"
035fi
036########################################
037#
038#日付
039STR_DATE=$(/bin/date +"%Y%m%d")
040#バックアップ用のパス
041STR_BACKUP_PATH="/etc/pam.d/sudo.${STR_DATE}"
042#バックアップ
043/usr/bin/sudo /usr/bin/ditto "/etc/pam.d/sudo" "$STR_BACKUP_PATH"
044#pam_tid行が無い場合は
045if ! grep -q "pam_tid.so" "/etc/pam.d/sudo"; then
046  #pam_tid行を追加する
047  /bin/echo "auth       sufficient     pam_tid.so" | /usr/bin/sudo /usr/bin/tee -a "/etc/pam.d/sudo" >/dev/null
048fi
049########################################
050#
051STR_RESPONSE=$(/usr/bin/sudo /usr/bin/bioutil -s -c | grep "$USER_ID" | /usr/bin/wc -l)
052/bin/echo "Bioutil Used: " "$STR_RESPONSE"
053if [ "$STR_RESPONSE" -ge 1 ]; then
054  /bin/echo "タッチID利用中"
055else
056  /bin/echo "タッチID未設定"
057fi
058exit 0
AppleScriptで生成しました

|

[macOS15]spctlによるGatekeeperの設定ができなくなる

デベロッパーIDの取得等他の機能は利用可能です
Gatekeeperの設定変更はUI使う必要が出たって事かな

サンプルコード

サンプルソース(参考)
行番号ソース
001sh-3.2$ 
002sh-3.2$ 
003sh-3.2$ /usr/bin/sudo /usr/sbin/spctl --disable-status
004The option to globally disable the assessment system is currently available in System Settings.
005sh-3.2$ /usr/bin/sudo /usr/sbin/spctl --enable
006This operation is no longer supported. Please see the man page for more information.
007sh-3.2$ /usr/bin/sudo /usr/sbin/spctl --master-enable
008This operation is no longer supported. Please see the man page for more information.
009sh-3.2$ /usr/bin/sudo /usr/sbin/spctl --global-enable
010This operation is no longer supported. Please see the man page for more information.
011sh-3.2$ /usr/bin/sudo /usr/sbin/spctl --global-disable
012Globally disabling the assessment system needs to be confirmed in System Settings.
013sh-3.2$ /usr/bin/sudo /usr/sbin/spctl --master-disable
014Globally disabling the assessment system needs to be confirmed in System Settings.
015sh-3.2$ 
AppleScriptで生成しました

|

[softwareupdate] install-rosetta 許諾の応答をAで抜ける


サンプルコード

サンプルソース(参考)
行番号ソース
001/bin/echo "A" | /usr/sbin/softwareupdate --install-rosetta
002# OR
003/usr/bin/yes "A" | /usr/sbin/softwareupdate --install-rosetta
004
005/usr/sbin/softwareupdate --install "Command Line Tools for Xcode-16.0"
AppleScriptで生成しました

|

[mobileconfig]タイムサーバー設定

タイムサーバー
主要なところは

time.windows.com
pool.ntp.org
ntp.nict.jp
time.apple.com
time.euro.apple.com
time.asia.apple.com

コマンドラインで変更したい場合は

サンプルコード

サンプルソース(参考)
行番号ソース
001#!/bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003#################################################
004#変更する場合
005/usr/bin/sntp -sS time.asia.apple.com
006#Apple外の信頼できるNTPサーバー
007/usr/bin/sntp -sS ntp.nict.jp
AppleScriptで生成しました

タイムゾーンは
/private/var/db/timezone/zoneinfo
ディレクトリ構造=タイムゾーンの指定値
Asia/Tokyoとなります

20240907011227_1450x480
サンプルコード

サンプルソース(参考)
行番号ソース
001#!/bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003#################################################
004#タイムゾーン
005#現在の設定
006/usr/bin/readlink /private/etc/localtime 
007#または
008/usr/bin/sudo /usr/sbin/systemsetup -gettimezone
009#設定変更
010/usr/bin/sudo  /bin/ln -sf /var/db/timezone/zoneinfo/Asia/Tokyo /private/etc/localtime 
011#または
012/usr/bin/sudo  /usr/sbin/systemsetup -settimezone Asia/Tokyo
AppleScriptで生成しました

サンプルコード

サンプルソース(参考)
行番号ソース
001<?xml version="1.0" encoding="UTF-8"?>
002<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
003<plist version="1.0">
004  <dict>
005    <key>ConsentText</key>
006    <dict>
007      <key>default</key>
008      <string>com.apple.MCX 初期設定 (default) この設定は削除しないでください 設定には管理者パスワードが必要です </string>
009      <key>en</key>
010      <string>com.apple.MCX Preferences (en) Please do not delete this setting. Administrator
011        password is required for this configuration. </string>
012      <key>ja</key>
013      <string>com.apple.MCX 初期設定 (ja) この設定は削除しないでください 設定には管理者パスワードが必要です </string>
014    </dict>
015    <key>HasRemovalPasscode</key>
016    <false />
017    <key>PayloadContent</key>
018    <array>
019      <dict>
020        <key>TMAutomaticTimeOnlyEnabled</key>
021        <true />
022
023        <key>PayloadDescription</key>
024        <string>com.apple.timed</string>
025        <key>PayloadDisplayName</key>
026        <string>macOS Time Synchronization Daemon</string>
027        <key>PayloadIdentifier</key>
028        <string>com.apple.timed.D1D51073-DDFB-429E-AD24-43A2C8213CC5</string>
029        <key>PayloadType</key>
030        <string>com.apple.timed</string>
031        <key>PayloadUUID</key>
032        <string>D1D51073-DDFB-429E-AD24-43A2C8213CC5</string>
033        <key>PayloadVersion</key>
034        <integer>20231029</integer>
035      </dict>
036      <dict>
037        <key>Active</key>
038        <true />
039
040
041        <key>PayloadDescription</key>
042        <string>com.apple.timezone.auto</string>
043        <key>PayloadDisplayName</key>
044        <string>com.apple.timezone.auto</string>
045        <key>PayloadIdentifier</key>
046        <string>com.apple.timezone.auto.0B36F3F8-173A-4387-92AD-840AA3A54590</string>
047        <key>PayloadOrganization</key>
048        <string>com.cocolog-nifty.quicktimer</string>
049        <key>PayloadType</key>
050        <string>com.apple.timezone.auto</string>
051        <key>PayloadUUID</key>
052        <string>0B36F3F8-173A-4387-92AD-840AA3A54590</string>
053        <key>PayloadVersion</key>
054        <integer>20231029</integer>
055      </dict>
056      <dict>
057        <key>timeServer</key>
058        <string>ntp.nict.jp</string>
059
060        <key>timeZone</key>
061        <string>Asia/Tokyo</string>
062
063
064        <key>PayloadDescription</key>
065        <string>com.apple.MCX</string>
066        <key>PayloadDisplayName</key>
067        <string>com.apple.MCX</string>
068        <key>PayloadIdentifier</key>
069        <string>com.apple.MCX.FE487FB4-95E6-4CDC-8916-F8E0CE39400C</string>
070        <key>PayloadOrganization</key>
071        <string>com.cocolog-nifty.quicktimer</string>
072        <key>PayloadType</key>
073        <string>com.apple.MCX</string>
074        <key>PayloadUUID</key>
075        <string>FE487FB4-95E6-4CDC-8916-F8E0CE39400C</string>
076        <key>PayloadVersion</key>
077        <integer>20231029</integer>
078      </dict>
079    </array>
080    <key>PayloadDescription</key>
081    <string>時間関連の設定です</string>
082    <key>PayloadDisplayName</key>
083    <string>com.apple.time</string>
084    <key>PayloadIdentifier</key>
085    <string>com.apple.time.A0551A73-EE93-418B-B42D-898563767783</string>
086    <key>PayloadOrganization</key>
087    <string>com.cocolog-nifty.quicktimer</string>
088    <key>PayloadRemovalDisallowed</key>
089    <false />
090    <key>PayloadScope</key>
091    <string>System</string>
092    <key>PayloadType</key>
093    <string>Configuration</string>
094    <key>PayloadUUID</key>
095    <string>A0551A73-EE93-418B-B42D-898563767783</string>
096    <key>PayloadVersion</key>
097    <integer>20231029</integer>
098    <key>TargetDeviceType</key>
099    <integer>5</integer>
100  </dict>
101</plist>
AppleScriptで生成しました

|

[applescript]exiftoolインストール(シングルファイル形式のPKG対応)


AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# 留意事項  インストール先が ~/bin/exiftool になっています
005# PKGの形式変更に対応
006#com.cocolog-nifty.quicktimer.icefloe
007----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
008use AppleScript version "2.8"
009use framework "Foundation"
010use scripting additions
011
012property refMe : a reference to current application
013
014set strVerURL to ("https://exiftool.org/ver.txt") as text
015set strInstrallDirPath to ("~/bin/exiftool") as text
016
017############################
018#インストール先
019set ocidInstrallDirPathStr to refMe's NSString's stringWithString:(strInstrallDirPath)
020set ocidInstrallDirPath to ocidInstrallDirPathStr's stringByStandardizingPath()
021set ocidInstrallDirPathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidInstrallDirPath) isDirectory:(true)
022#フォルダを作る
023set appFileManager to refMe's NSFileManager's defaultManager()
024set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
025ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
026set listDone to appFileManager's createDirectoryAtURL:(ocidInstrallDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
027if (item 1 of listDone) is true then
028  log "正常処理"
029else if (item 2 of listDone) ≠ (missing value) then
030  set strErrorNO to (item 2 of listDone)'s code() as text
031  set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
032  refMe's NSLog("■:" & strErrorNO & strErrorMes)
033  return "エラーしました" & strErrorNO & strErrorMes
034end if
035set strInstrallDirPath to (ocidInstrallDirPathURL's |path|()) as text
036log strInstrallDirPath
037
038############################
039#バージョン番号を取得する
040set ocidVerURLStr to refMe's NSString's stringWithString:(strVerURL)
041set ocidVerURL to refMe's NSURL's alloc()'s initWithString:(ocidVerURLStr)
042set ocidVerText to refMe's NSString's stringWithContentsOfURL:(ocidVerURL) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
043set strVer to (item 1 of ocidVerText) as text
044
045############################
046#ダウンロードディレクトリ
047set appFileManager to refMe's NSFileManager's defaultManager()
048set ocidTempDirURL to appFileManager's temporaryDirectory()
049set ocidUUID to refMe's NSUUID's alloc()'s init()
050set ocidUUIDString to ocidUUID's UUIDString
051set ocidSaveDirPathURL to ocidTempDirURL's URLByAppendingPathComponent:(ocidUUIDString) isDirectory:(true)
052#フォルダを作る
053set appFileManager to refMe's NSFileManager's defaultManager()
054set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
055ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
056set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
057if (item 1 of listDone) is true then
058  log "正常処理"
059else if (item 2 of listDone) ≠ (missing value) then
060  set strErrorNO to (item 2 of listDone)'s code() as text
061  set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
062  refMe's NSLog("■:" & strErrorNO & strErrorMes)
063  return "エラーしました" & strErrorNO & strErrorMes
064end if
065#解凍先ディレクトリ
066set ocidExpandDirPathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:("ExifTool") isDirectory:(true)
067set strExpandDirPath to (ocidExpandDirPathURL's |path|()) as text
068
069
070############################
071#URLとファイル名の整形
072set strPkgName to ("ExifTool-" & strVer & ".pkg") as text
073#保存URL
074set ocidSavePkgFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strPkgName)
075set strSavePkgFilePath to (ocidSavePkgFilePathURL's |path|()) as text
076
077#URL
078set strURL to ("https://exiftool.org/" & strPkgName & "") as text
079set ocidURLStr to refMe's NSString's stringWithString:(strURL)
080set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidURLStr)
081
082############################
083#ダウンロード
084set ocidOption to refMe's NSDataReadingMappedAlways
085set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidURL) options:(ocidOption) |error| :(reference)
086if (item 2 of listResponse) = (missing value) then
087  log "正常処理"
088  set ocidPkgData to (item 1 of listResponse)
089else if (item 2 of listResponse) ≠ (missing value) then
090  set strErrorNO to (item 2 of listResponse)'s code() as text
091  set strErrorMes to (item 2 of listResponse)'s localizedDescription() as text
092  refMe's NSLog("■:" & strErrorNO & strErrorMes)
093  return "エラーしました" & strErrorNO & strErrorMes
094end if
095
096############################
097#保存
098set ocidOption to refMe's NSDataWritingAtomic
099set listDone to ocidPkgData's writeToURL:(ocidSavePkgFilePathURL) options:(ocidOption) |error| :(reference)
100if (item 1 of listDone) is true then
101  log "正常処理"
102else if (item 2 of listDone) ≠ (missing value) then
103  set strErrorNO to (item 2 of listDone)'s code() as text
104  set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
105  refMe's NSLog("■:" & strErrorNO & strErrorMes)
106  return "エラーしました" & strErrorNO & strErrorMes
107end if
108
109############################
110#pkg解凍
111set strComandText to "/usr/sbin/pkgutil  --expand-full  \"" & strSavePkgFilePath & "\" \"" & strExpandDirPath & "\"" as text
112log strComandText
113try
114  do shell script strComandText
115on error
116  return "エラーしました パッケージの解凍でエラー"
117end try
118
119############################
120#古い方をゴミ箱に
121set appFileManager to refMe's NSFileManager's defaultManager()
122set listDone to (appFileManager's trashItemAtURL:(ocidInstrallDirPathURL) resultingItemURL:(ocidInstrallDirPathURL) |error| :(reference))
123if (item 1 of listDone) is true then
124  log "正常処理"
125else if (item 2 of listDone) ≠ (missing value) then
126  set strErrorNO to (item 2 of listDone)'s code() as text
127  set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
128  refMe's NSLog("■:" & strErrorNO & strErrorMes)
129  return "エラーしました" & strErrorNO & strErrorMes
130end if
131
132
133###ユーザーディレクトリにコピー
134set ocidDittoDirPathURL to ocidExpandDirPathURL's URLByAppendingPathComponent:("Payload/usr/local/bin") isDirectory:(true)
135set strDittoDirPath to (ocidDittoDirPathURL's |path|()) as text
136set strCoommandText to "/usr/bin/ditto  \"" & strDittoDirPath & "\"  \"" & strInstrallDirPath & "\"" as text
137log strCoommandText
138try
139  do shell script strCoommandText
140on error
141  return "エラーしました dittoでエラー"
142end try
143
144
145############################
146#インストール先を開く
147set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
148set boolDone to appSharedWorkspace's openURL:(ocidInstrallDirPathURL)
149
AppleScriptで生成しました

|

Unarchiverインストール ユーザードメイン


AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# Unarchiverをユーザーアプリケーションフォルダ内にコピーインストール
005# com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007##自分環境がos12なので2.8にしているだけです
008use AppleScript version "2.8"
009use framework "Foundation"
010use framework "UniformTypeIdentifiers"
011use framework "AppKit"
012use scripting additions
013
014property refMe : a reference to current application
015
016
017##############################
018#ダウンロードするURL
019set ocidURLComponents to refMe's NSURLComponents's alloc()'s init()
020ocidURLComponents's setScheme:"https"
021ocidURLComponents's setHost:"dl.devmate.com"
022ocidURLComponents's setPath:"/com.macpaw.site.theunarchiver/TheUnarchiver.dmg"
023set ocidURLStrings to ocidURLComponents's |URL|'s absoluteString()
024set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidURLStrings)
025set ocidFileName to ocidURL's lastPathComponent()
026
027##########################
028#ゴミ箱に入れる
029set listChkPath to {"/Applications/The Unarchiver.app", "/Applications/Utilities/The Unarchiver.app", "~/Applications/The Unarchiver.app", "~/Applications/Utilities/The Unarchiver.app", "~/Library/Containers/cx.c3.theunarchiver", "~/Library/Containers/com.macpaw.site.theunarchiver"} as list
030
031repeat with itemChkPath in listChkPath
032  set strFilePath to (itemChkPath) as text
033  set ocidFilePathStr to (refMe's NSString's stringWithString:(strFilePath))
034  set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
035  set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
036  set appFileManager to refMe's NSFileManager's defaultManager()
037  set listDone to (appFileManager's trashItemAtURL:(ocidFilePathURL) resultingItemURL:(ocidFilePathURL) |error| :(reference))
038  if (item 1 of listDone) is true then
039    log "正常処理"
040  else if (item 2 of listDone) ≠ (missing value) then
041    set strErrorNO to (item 2 of listDone)'s code() as text
042    set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
043    refMe's NSLog("■:" & strErrorNO & strErrorMes)
044    log "エラーしました" & strErrorNO & strErrorMes
045  end if
046  
047end repeat
048
049##########################
050#ユーザーユーティリティ
051set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSApplicationDirectory) inDomains:(refMe's NSUserDomainMask))
052set ocidApplicationDirPathURL to ocidURLsArray's firstObject()
053set ocidUtilitiesDirPathURL to ocidApplicationDirPathURL's URLByAppendingPathComponent:("Utilities") isDirectory:(true)
054#フォルダ作って
055set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
056ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
057set listDone to appFileManager's createDirectoryAtURL:(ocidUtilitiesDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
058if (item 1 of listDone) is true then
059  log "createDirectoryAtURL 正常処理"
060else if (item 2 of listDone) ≠ (missing value) then
061  log (item 2 of listDone)'s code() as text
062  log (item 2 of listDone)'s localizedDescription() as text
063  return "createDirectoryAtURL エラーしました"
064end if
065#localized
066set ocidNullText to refMe's NSString's stringWithString:("")
067set ocidLocalizedPathURL to ocidUtilitiesDirPathURL's URLByAppendingPathComponent:(".localized") isDirectory:(false)
068set listDone to ocidNullText's writeToURL:(ocidLocalizedPathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
069if (item 1 of listDone) is true then
070  log "createDirectoryAtURL 正常処理"
071else if (item 2 of listDone) ≠ (missing value) then
072  log (item 2 of listDone)'s code() as text
073  log (item 2 of listDone)'s localizedDescription() as text
074  return "writeToURL エラーしました"
075end if
076set ocidDistAppFilePathURL to ocidUtilitiesDirPathURL's URLByAppendingPathComponent:("The Unarchiver.app") isDirectory:(true)
077
078
079
080##########################
081#起動時に削除される項目にダウンロード
082
083set ocidTempDirURL to appFileManager's temporaryDirectory()
084set ocidUUID to refMe's NSUUID's alloc()'s init()
085set ocidUUIDString to ocidUUID's UUIDString
086set ocidSaveDirPathURL to ocidTempDirURL's URLByAppendingPathComponent:(ocidUUIDString) isDirectory:(true)
087#フォルダを作っておく
088set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
089ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
090set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error| :(reference)
091if (item 1 of listDone) is true then
092  log "createDirectoryAtURL 正常処理"
093else if (item 2 of listDone) ≠ (missing value) then
094  log (item 2 of listDone)'s code() as text
095  log (item 2 of listDone)'s localizedDescription() as text
096  return "createDirectoryAtURL エラーしました"
097end if
098
099
100##########################
101#NSDATAでダウンロード
102set ocidOption to (refMe's NSDataReadingMappedIfSafe)
103set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidURL) options:(ocidOption) |error| :(reference)
104if (item 2 of listResponse) = (missing value) then
105  log "正常処理"
106  set ocidReadData to (item 1 of listResponse)
107else if (item 2 of listResponse) ≠ (missing value) then
108  log (item 2 of listResponse)'s code() as text
109  log (item 2 of listResponse)'s localizedDescription() as text
110  return "エラーしました"
111end if
112
113##############################
114#保存先
115set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(ocidFileName) isDirectory:(false)
116#保存
117set ocidOption to (refMe's NSDataWritingAtomic)
118set listDone to ocidReadData's writeToURL:(ocidSaveFilePathURL) options:(ocidOption) |error| :(reference)
119if (item 1 of listDone) is true then
120  log "正常処理"
121else if (item 2 of listDone) ≠ (missing value) then
122  log (item 2 of listDone)'s code() as text
123  log (item 2 of listDone)'s localizedDescription() as text
124  return "エラーしました"
125end if
126
127##############################
128#マウントポイント
129#保存先
130set ocidMountPointPathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:("MountPoint") isDirectory:(true)
131#フォルダを作っておく
132set listDone to appFileManager's createDirectoryAtURL:(ocidMountPointPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error| :(reference)
133if (item 1 of listDone) is true then
134  log "createDirectoryAtURL 正常処理"
135else if (item 2 of listDone) ≠ (missing value) then
136  log (item 2 of listDone)'s code() as text
137  log (item 2 of listDone)'s localizedDescription() as text
138  return "createDirectoryAtURL エラーしました"
139end if
140##############################
141#ディスクイメージマウント
142set strMountPointPath to (ocidMountPointPathURL's |path|()) as text
143set strSaveFilePath to (ocidSaveFilePathURL's |path|()) as text
144set strCommandText to ("/usr/bin/hdiutil attach \"" & strSaveFilePath & "\" -noverify -nobrowse -noautoopen -mountpoint \"" & strMountPointPath & "\"") as text
145log strCommandText
146try
147  do shell script strCommandText
148on error
149  return "hdiutil attach エラーしました"
150end try
151
152##############################
153#
154set ocidDmgAppPathURL to ocidMountPointPathURL's URLByAppendingPathComponent:("The Unarchiver.app") isDirectory:(true)
155
156set appFileManager to refMe's NSFileManager's defaultManager()
157set listDone to (appFileManager's copyItemAtURL:(ocidDmgAppPathURL) toURL:(ocidDistAppFilePathURL) |error| :(reference))
158if (item 1 of listDone) is true then
159  log "正常処理"
160else if (item 2 of listDone) ≠ (missing value) then
161  set strErrorNO to (item 2 of listDone)'s code() as text
162  set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
163  refMe's NSLog("■:" & strErrorNO & strErrorMes)
164  return "エラーしました" & strErrorNO & strErrorMes
165end if
166
167
168##############################
169#ディスクイメージ デタッチ
170set strCommandText to ("/usr/bin/hdiutil detach \"" & strMountPointPath & "\"  -force") as text
171log strCommandText
172try
173  do shell script strCommandText
174on error
175  return "hdiutil detach エラーしました"
176end try
177
178##############################
179#起動
180set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
181set boolDone to appSharedWorkspace's openURL:(ocidDistAppFilePathURL)
182
183delay 1
184##############################
185#終了
186tell application id "com.macpaw.site.theunarchiver" to quit
AppleScriptで生成しました

|

[softwareupdate]基本構文

20240619092845950x1122
サンプルコード

サンプルソース(参考)
行番号ソース
001#! /bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003#################################################
004
005/usr/sbin/softwareupdate --install-rosetta
006
007/usr/sbin/softwareupdate --list
008
009/usr/sbin/softwareupdate --download --all
010
011/usr/sbin/softwareupdate --download --all --include-config-data
012
013/usr/sbin/softwareupdate --download --all
014
015/usr/sbin/softwareupdate --install --safari-only
016
017/usr/sbin/softwareupdate --install --safari-only --include-config-data
018
019/usr/sbin/softwareupdate --install --recommended --include-config-data
020
021
022
023exit 0
024
025usage: softwareupdate <cmd> [<args> ...]
026
027** Manage Updates:
028  -l | --list   List all appropriate update labels (options:  --no-scan, --product-types)
029  -d | --download   Download Only
030  -i | --install    Install
031    <label> ... specific updates
032    -a | --all    All appropriate updates
033    -R | --restart    Automatically restart (or shut down) if required to complete installation.
034    -r | --recommended  Only recommended updates
035         --os-only  Only OS updates
036         --safari-only  Only Safari updates
037         --stdinpass  Password to authenticate as an owner. Apple Silicon only.
038         --user Local username to authenticate as an owner. Apple Silicon only.
039  --list-full-installers    List the available macOS Installers
040  --fetch-full-installer    Install the latest recommended macOS Installer
041    --full-installer-version  The version of macOS to install. Ex: --full-installer-version 10.15
042  --install-rosetta Install Rosetta 2
043  --background    Trigger a background scan and update operation
044
045** Other Tools:
046  --dump-state    Log the internal state of the SU daemon to /var/log/install.log
047  --evaluate-products Evaluate a list of product keys specified by the --products option 
048  --history   Show the install history.  By default, only displays updates installed by softwareupdate.  
049
050** Options:
051  --no-scan   Do not scan when listing or installing updates (use available updates previously scanned)
052  --product-types <type>    Limit a scan to a particular product type only - ignoring all others
053    Ex:  --product-types macOS  || --product-types macOS,Safari 
054  --products    A comma-separated (no spaces) list of product keys to operate on.
055  --force     Force an operation to complete.  Use with --background to trigger a background scan regardless of "Automatically check" pref 
056  --agree-to-license    Agree to the software license agreement without user interaction.
057
058  --verbose   Enable verbose output
059  --help      Print this help
AppleScriptで生成しました


サンプルコード

サンプルソース(参考)
行番号ソース
001
002
003bash-3.2$ /usr/sbin/softwareupdate --list --include-config-data
004
005Software Update Tool
006
007Finding available software
008Software Update found the following new or updated software:
009* Label: XProtectPlistConfigData_10_15-5268
010  Title: XProtectPlistConfigData, Version: 5268, Size: 1017KiB, Recommended: YES, 
011* Label: XProtectPayloads_10_15-137
012  Title: XProtectPayloads, Version: 137, Size: 21358KiB, Recommended: YES, 
013
014bash-3.2$ /usr/sbin/softwareupdate --download --all --include-config-data
015
016Software Update Tool
017
018Finding available software
019
020Downloading XProtectPlistConfigData
021Downloading XProtectPayloads
022Downloaded XProtectPlistConfigData
023Downloaded XProtectPayloads
024Done.
025bash-3.2$ 
026bash-3.2$ 
027bash-3.2$ /usr/sbin/softwareupdate --install --all --include-config-data 
028Software Update Tool
029
030Finding available software
031
032Downloaded XProtectPlistConfigData
033Downloaded XProtectPayloads
034Installing XProtectPlistConfigData, XProtectPayloads
035Done with XProtectPlistConfigData
036Done with XProtectPayloads
037Done.
038bash-3.2$ 
AppleScriptで生成しました

|

[macos14]タッチIDを有効にする


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

#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
#
#################################################
###管理者インストールしているか?チェック
USER_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行ユーザー(whoami): $USER_WHOAMI"
if [ "$USER_WHOAMI" != "root" ]; then
  /bin/echo "このスクリプトを実行するには管理者権限が必要です。"
  /bin/echo "sudo で実行してください"
  ### path to me
  SCRIPT_PATH="${BASH_SOURCE[0]}"
  /bin/echo "/usr/bin/sudo \"$SCRIPT_PATH\""
  /bin/echo "↑を実行してください"
  exit 1
else
  ###実行しているユーザー名
  CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
  /bin/echo "コンソールユーザー(scutil): $CONSOLE_USER"
  ###実行しているユーザー名
  HOME_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
  /bin/echo "実行ユーザー(HOME): $HOME_USER"
  ###logname
  LOGIN_NAME=$(/usr/bin/logname)
  /bin/echo "ログイン名(logname): $LOGIN_NAME"
  ###UID
  USER_NAME=$(/usr/bin/id -un)
  /bin/echo "ユーザー名(id): $USER_NAME"
fi
#################################################
###
STR_DATE=$(/bin/date +'%Y%m%d')
STR_BK_PATH="/private/etc/pam.d/sudo_local.$STR_DATE.template"
STR_TMP_PATH="/private/etc/pam.d/sudo_local.template"
STR_DIST_PATH="/private/etc/pam.d/sudo_local"

if [ -e "$STR_DIST_PATH" ]; then
  /bin/echo "すでに""$STR_DIST_PATH""ファイルが存在します"
  /bin/mv "$STR_DIST_PATH" "$STR_BK_PATH"
fi
/usr/bin/ditto "$STR_TMP_PATH" "$STR_DIST_PATH"
#/usr/bin/sed 's/#auth/auth/' "$STR_TMP_PATH" > "$STR_DIST_PATH"
/usr/bin/sed -i '' -e 's/^#auth/auth/g' "$STR_DIST_PATH"
/bin/chmod 444 "$STR_DIST_PATH"

exit 0


|

[bash]Microsoft 365 BusinessPro Suite Install(新規または上書き)

要管理者権限 sudo実行必須

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

#!/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 で実行してください"
  ### path to me
  SCRIPT_PATH="${BASH_SOURCE[0]}"
  /bin/echo "/usr/bin/sudo \"$SCRIPT_PATH\""
  /bin/echo "↑を実行してください"
  exit 1
else
  ###実行しているユーザー名
  SUDO_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
  /bin/echo "実行ユーザー:" "$SUDO_USER"
fi

#################################
#インストール基本
#################################

STR_URL="https://go.microsoft.com/fwlink/?linkid=2009112"

LOCAL_TMP_DIR=$(/usr/bin/sudo -u "$SUDO_USER" /usr/bin/mktemp -d)
/bin/echo "TMPDIR:" "$LOCAL_TMP_DIR"

###ファイル名を取得
PKG_FILE_NAME=$(/usr/bin/curl -s -L -I -o /dev/null -w '%{url_effective}' "$STR_URL" | /usr/bin/rev | /usr/bin/cut -d'/' -f1 | /usr/bin/rev)
/bin/echo "PKG_FILE_NAME" "$PKG_FILE_NAME"

###ファイル名指定してダウンロード
/usr/bin/sudo -u "$SUDO_USER" /usr/bin/curl -L -o "$LOCAL_TMP_DIR/$PKG_FILE_NAME" "$STR_URL" --http1.1 --connect-timeout 20

### インストール(上書き)を実行する
/usr/sbin/installer -pkg "$LOCAL_TMP_DIR/$PKG_FILE_NAME" -target / -dumplog -allowUntrusted -lang ja

exit 0


|

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat AddOn Acrobat Annotation Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat JS Acrobat Manifest Acrobat Menu Acrobat Open Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat python Acrobat Reader Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin Support Admin System Information Admin Tools Admin Users Admin Volumes Adobe Adobe FDKO Adobe RemoteUpdateManager AppKit Apple AppleScript AppleScript do shell script AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript System Events AppleScript System Events Plist AppleScript Video Applications AppStore Archive Attributes Automator BackUp Barcode Barcode QR Barcode QR Decode Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome CIImage CityCode CloudStorage Color com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Device Diff Disk Dock DropBox Droplet eMail Encode % Encode Decode Encode UTF8 Error EXIFData ffmpeg File Finder Firefox Folder FolderAction Fonts GIF github Guide HTML HTML Entity Icon Illustrator Image Events Image2PDF ImageOptim iPhone iWork Javascript Jedit Json Label Leading Zero List locationd LRC lsappinfo LSSharedFileList m3u8 Mail MakePDF Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Mouse Music NetWork Notes NSArray NSArray Sort NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSColor NSColorList NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSPrintOperation NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth OneDrive PDF PDFAnnotation PDFAnnotationWidget PDFContext PDFDisplayBox PDFDocumentPermissions PDFImageRep PDFKit PDFnUP PDFOutline perl Photoshop PlistBuddy pluginkit postalcode PostScript prefPane Preview Python QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver SF Symbols character id SF Symbols Entity sips Skype Slack Sound Spotlight sqlite SRT StandardAdditions Swift System Settings TCC TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code VMware Fusion Wacom webarchive webp Wifi Windows XML XML EPUB XML OPML XML Plist XML RSS XML savedSearch XML SVG XML TTML XML webloc XML XMP YouTube zoom