Admin Volumes

inode番号から対象のファイルを探す(warning: inode (id 9999999): Resource Fork xattr is missing or empty for compressed file)(error: doc-id tree: record exists for doc-id xxxxx, file-id 9999999 but no inode references this doc-id)

こちらの記事
How to identify the file responsible for a disk error
を参考に作成しました

warning: inode (id 999999999): Resource Fork xattr is missing or empty for compressed file

20241022095546_926x7262

error: doc-id tree: record exists for doc-id xxxxx, file-id 999999999 but no inode references this doc-id

20241022110501_465x204


このようなメッセージが出た場合に対象のファイルを探します
すでに、問題のあるファイルのinode番号になるので
結果、検索できない場合もあります
結果が出る場合はさほど問題ない
inodeのファイルのパスが参照出来ないのは、ちょっと問題が大きいが
今すぐフォーマットして…といった緊急性のある不具合でもない

スクリプトにinode番号をペーストしてください

20241022095718_1372x7322

コマンドライン形式でボリュームIDを付与して戻します

20241022095729_962x10022

ターミナルにペーストしてどのファイルが対象なのか?がわかります

20241022100515_1246x3662

AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#こちらの記事を参考にしました
004# https://eclecticlight.co/2023/08/28/how-to-identify-the-file-responsible-for-a-disk-error/
005#
006#com.cocolog-nifty.quicktimer.icefloe
007----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
008use AppleScript version "2.8"
009use framework "Foundation"
010use framework "UniformTypeIdentifiers"
011use framework "AppKit"
012use scripting additions
013property refMe : a reference to current application
014property refNSNotFound : a reference to 9.22337203685477E+18 + 5807
015
016set appFileManager to refMe's NSFileManager's defaultManager()
017
018########################
019## クリップボードの中身取り出し
020########################
021###初期化
022set appPasteboard to refMe's NSPasteboard's generalPasteboard()
023##格納されているタイプをリストにして
024set ocidPastBoardTypeArray to appPasteboard's types
025###テキストがあれば
026set boolContain to ocidPastBoardTypeArray's containsObject:("public.utf8-plain-text")
027if (boolContain as boolean) is true then
028  ###値を格納する
029  tell application "Finder"
030    set strReadString to (the clipboard as text) as text
031  end tell
032else
033  ###UTF8が無いなら
034  ##テキスト形式があるか?確認して
035  set boolContain to ocidPastBoardTypeArray's containsObject:(refMe's NSPasteboardTypeString)
036  ##テキスト形式があるなら
037  if (boolContain as boolean) is true then
038    set ocidTypeClassArray to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
039    ocidTypeClassArray's addObject:(refMe's NSString)
040    set ocidReadString to appPasteboard's readObjectsForClasses:(ocidTypeClassArray) options:(missing value)
041    set strReadString to ocidReadString as text
042  else
043    log "テキストなし"
044    set strReadString to strMes as text
045  end if
046end if
047#################
048#ダイアログ
049tell current application
050  set strName to name as text
051end tell
052if strName is "osascript" then
053  tell application "Finder" to activate
054else
055  tell current application to activate
056end if
057set aliasIconPath to (POSIX file "/System/Library/CoreServices/Finder.app/Contents/Resources/Finder.icns") as alias
058try
059  set recordResult to (display dialog "inode番号を入れてください\nwarning: inode (id 99999999)の99999999" with title "入力してください" default answer strReadString buttons {"キャンセル", "実行"} default button "実行" cancel button "キャンセル" giving up after 20 with icon aliasIconPath without hidden answer) as record
060on error
061  return "キャンセルしました"
062end try
063if (gave up of recordResult) is true then
064  return "時間切れです"
065end if
066if button returned of recordResult is "実行" then
067  set strReturnedText to (text returned of recordResult) as text
068end if
069########
070#戻り値整形
071set ocidResponseText to (refMe's NSString's stringWithString:(strReturnedText))
072###タブと改行を除去しておく
073set ocidTextM to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
074ocidTextM's appendString:(ocidResponseText)
075###除去する文字列リスト
076set listRemoveChar to {"\n", "\r", "\t", "¥", "¥", "cm", "CM", ",", "\\s"} as list
077##置換
078repeat with itemChar in listRemoveChar
079  set strPattern to itemChar as text
080  set strTemplate to ("") as text
081  set ocidOption to (refMe's NSRegularExpressionCaseInsensitive)
082  set listResponse to (refMe's NSRegularExpression's regularExpressionWithPattern:(strPattern) options:(ocidOption) |error| :(reference))
083  if (item 2 of listResponse) ≠ (missing value) then
084    log (item 2 of listResponse)'s localizedDescription() as text
085    return "正規表現パターンに誤りがあります"
086  else
087    set ocidRegex to (item 1 of listResponse)
088  end if
089  set numLength to ocidResponseText's |length|()
090  set ocidRange to refMe's NSRange's NSMakeRange(0, numLength)
091  set ocidResponseText to (ocidRegex's stringByReplacingMatchesInString:(ocidResponseText) options:0 range:(ocidRange) withTemplate:(strTemplate))
092end repeat
093###数字以外があれば中止する
094set ocidDemSet to refMe's NSCharacterSet's characterSetWithCharactersInString:("0123456789.")
095##数字以外って意味で逆セット
096set ocidCharSet to ocidDemSet's invertedSet()
097set ocidOption to (refMe's NSLiteralSearch)
098##数字以外の文字を探して
099set ocidRange to ocidResponseText's rangeOfCharacterFromSet:(ocidCharSet) options:(ocidOption)
100set ocidLocation to ocidRange's location
101##なければOK
102if ocidLocation = refNSNotFound then
103  log "処理開始"
104else if ocidLocation0 then
105  tell application "Finder"
106    set aliasPathToMe to (path to me) as alias
107  end tell
108  log "数値以外の値があったのでやりなし"
109  return run script aliasPathToMe
110end if
111#####
112set listVolumeName to {"Hardware", "iSCPreboot", "Preboot", "Update", "VM", "xarts", "Data"} as list
113
114#
115set appFileManager to refMe's NSFileManager's defaultManager()
116set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSSystemDomainMask))
117set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
118set ocidSystemRootDirPathURL to ocidLibraryDirPathURL's URLByDeletingLastPathComponent()
119#
120set ocidVolumesDirPathURL to ocidSystemRootDirPathURL's URLByAppendingPathComponent:("Volumes") isDirectory:(true)
121#
122set ocidOutPutString to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
123set ocidOutPutStringCom to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
124#
125repeat with itemVolumeName in listVolumeName
126  set ocidVolDirPathURL to (ocidVolumesDirPathURL's URLByAppendingPathComponent:(itemVolumeName) isDirectory:(true))
127  
128  set listResponse to (appFileManager's attributesOfItemAtPath:(ocidVolDirPathURL's |path|) |error| :(reference))
129  set ocidAttributesDict to (item 1 of listResponse)
130  
131  #VolumeID
132  set numVolumeID to (ocidAttributesDict's objectForKey:(refMe's NSFileSystemNumber)) as integer
133  (ocidOutPutString's appendString:(itemVolumeName))
134  (ocidOutPutString's appendString:("\n"))
135  set strSetValue to ("/.vol/" & numVolumeID & "/" & ocidResponseText) as text
136  (ocidOutPutString's appendString:(strSetValue))
137  (ocidOutPutString's appendString:("\n"))
138  
139  set strSetValue to ("/usr/bin/GetFileInfo /.vol/" & numVolumeID & "/" & ocidResponseText) as text
140  (ocidOutPutStringCom's appendString:(strSetValue))
141  (ocidOutPutStringCom's appendString:("\n"))
142  
143end repeat
144
145set strMes to ocidOutPutString as text
146set strAns to ocidOutPutStringCom as text
147
148#ダイアログ
149tell current application
150  set strName to name as text
151end tell
152if strName is "osascript" then
153  tell application "Finder"
154    activate
155  end tell
156else
157  tell current application
158    activate
159  end tell
160end if
161set aliasIconPath to (POSIX file "/System/Library/CoreServices/Finder.app/Contents/Resources/Finder.icns") as alias
162try
163  set recordResult to (display dialog strMes with title "戻り値です" default answer strAns buttons {"クリップボードにコピー", "終了", "再実行"} default button "再実行" cancel button "終了" giving up after 20 with icon aliasIconPath without hidden answer) as record
164on error
165  return "エラーしました"
166end try
167if (gave up of recordResult) is true then
168  return "時間切れです"
169end if
170##############################
171#####自分自身を再実行
172##############################
173if button returned of recordResult is "再実行" then
174  tell application "Finder"
175    set aliasPathToMe to (path to me) as alias
176  end tell
177  run script aliasPathToMe with parameters "再実行"
178end if
179##############################
180#####値のコピー
181##############################
182if button returned of recordResult is "クリップボードにコピー" then
183  try
184    set strText to text returned of recordResult as text
185    ####ペーストボード宣言
186    set appPasteboard to refMe's NSPasteboard's generalPasteboard()
187    set ocidText to (refMe's NSString's stringWithString:(strText))
188    appPasteboard's clearContents()
189    appPasteboard's setString:(ocidText) forType:(refMe's NSPasteboardTypeString)
190  on error
191    tell application "Finder"
192      set the clipboard to strText as text
193    end tell
194  end try
195end if
196
197
198return 0
AppleScriptで生成しました

|

inode番号を調べる(warning: inode (id XXXXXXXX): Resource Fork xattr is missing or empty for compressed file)

inode番号がXXXXXXXX番の
xattr
ファイルに付随する
ファイルシステムのResource Forkにある拡張属性(extended attributes)
これが見つからない?か空の圧縮ファイルになっている警告

How to identify the file responsible for a disk errorこちらの記事を参考にしました
これが表示されたからといってディスクボリュームに重大な欠陥が発生しているわけではないので
今すぐフォーマットして…と慌てる必要はない
(時間があるならフォーマットからの再インストールするのはより良い)

Findコマンドで探すなら

サンプルコード

サンプルソース(参考)
行番号ソース
001#!/bin/bash
002
003/usr/bin/sudo /usr/bin/find  /System/Volumes/Data  -inum XXXXXXXXXXXX 2>/dev/null
004/usr/bin/sudo /usr/bin/find  / -inum XXXXXXXXXXXX 2>/dev/null
AppleScriptで生成しました

THE ECLECTIC LIGHT COMPANYの
Mr. Howardが作成しているツール
Mints LINK

調べる事もできる
20241022123549_744x138
20241022124013_2880x1800
20241022124037_800x255

で探せる『はず』だが 元々ディスクユーティリティでエラーになっているファイルなので
findコマンドで戻り値=inode番号が戻らない(findで探せない)事の方が多い

AppleScriptでinode番号を調べる
AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "UniformTypeIdentifiers"
010use framework "AppKit"
011use scripting additions
012
013property refMe : a reference to current application
014
015set appFileManager to refMe's NSFileManager's defaultManager()
016
017#############################
018###ダイアログ
019set strName to (name of current application) as text
020if strName is "osascript" then
021  tell application "Finder" to activate
022else
023  tell current application to activate
024end if
025#
026set appFileManager to refMe's NSFileManager's defaultManager()
027set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
028set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
029set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
030#
031set listUTI to {"public.item"}
032set strMes to ("ファイルを選んでください") as text
033set strPrompt to ("ファイルを選んでください") as text
034try
035  set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDefaultLocation) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
036on error
037  log "エラーしました"
038  return "エラーしました"
039end try
040#
041set strFilePath to (POSIX path of aliasFilePath) as text
042set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
043set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
044#
045set listResponse to appFileManager's attributesOfItemAtPath:(ocidFilePath) |error| :(reference)
046set ocidFileAttrDict to (item 1 of listResponse)
047
048set numInodeNo to (ocidFileAttrDict's valueForKey:(refMe's NSFileSystemFileNumber)) as integer
049set numVolumeID to (ocidFileAttrDict's objectForKey:(refMe's NSFileSystemNumber)) as integer
050
051
052set strRawNo to ("/usr/bin/GetFileInfo /.vol/" & numVolumeID & "/" & numInodeNo) as text
053set strMes to ("path: " & strFilePath & "\ninode: " & numInodeNo & "\nVolumeID: " & numVolumeID & "\nVolume Mount Path: /.vol/" & numVolumeID & "/" & numInodeNo) as text
054
055#ダイアログ
056tell current application
057  set strName to name as text
058end tell
059if strName is "osascript" then
060  tell application "Finder"
061    activate
062  end tell
063else
064  tell current application
065    activate
066  end tell
067end if
068set aliasIconPath to (POSIX file "/System/Library/CoreServices/Finder.app/Contents/Resources/Finder.icns") as alias
069try
070  set recordResult to (display dialog strMes with title "戻り値です" default answer strRawNo buttons {"クリップボードにコピー", "終了", "再実行"} default button "再実行" cancel button "終了" giving up after 20 with icon aliasIconPath without hidden answer) as record
071on error
072  return "エラーしました"
073end try
074if (gave up of recordResult) is true then
075  return "時間切れです"
076end if
077##############################
078#####自分自身を再実行
079##############################
080if button returned of recordResult is "再実行" then
081  tell application "Finder"
082    set aliasPathToMe to (path to me) as alias
083  end tell
084  run script aliasPathToMe with parameters "再実行"
085end if
086##############################
087#####値のコピー
088##############################
089if button returned of recordResult is "クリップボードにコピー" then
090  try
091    set strText to text returned of recordResult as text
092    ####ペーストボード宣言
093    set appPasteboard to refMe's NSPasteboard's generalPasteboard()
094    set ocidText to (refMe's NSString's stringWithString:(strText))
095    appPasteboard's clearContents()
096    appPasteboard's setString:(ocidText) forType:(refMe's NSPasteboardTypeString)
097  on error
098    tell application "Finder"
099      set the clipboard to strText as text
100    end tell
101  end try
102end if
103
104
105return 0
AppleScriptで生成しました

AppleScriptでvolumeIDを取得する
AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "UniformTypeIdentifiers"
010use framework "AppKit"
011use scripting additions
012
013property refMe : a reference to current application
014
015set appFileManager to refMe's NSFileManager's defaultManager()
016
017
018set listVolumeName to {"BaseSystem", "FieldService", "FieldServiceDiagnostic", "FieldServiceRepair", "Hardware", "iSCPreboot", "Preboot", "Recovery", "Update", "VM", "xarts", "Data"} as list
019
020
021#
022set appFileManager to refMe's NSFileManager's defaultManager()
023set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSSystemDomainMask))
024set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
025set ocidSystemRootDirPathURL to ocidLibraryDirPathURL's URLByDeletingLastPathComponent()
026#
027set ocidVolumesDirPathURL to ocidSystemRootDirPathURL's URLByAppendingPathComponent:("Volumes") isDirectory:(true)
028#
029set ocidOutPutString to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
030#
031repeat with itemVolumeName in listVolumeName
032  set ocidVolDirPathURL to (ocidVolumesDirPathURL's URLByAppendingPathComponent:(itemVolumeName) isDirectory:(true))
033  
034  set listResponse to (appFileManager's attributesOfItemAtPath:(ocidVolDirPathURL's |path|) |error| :(reference))
035  set ocidAttributesDict to (item 1 of listResponse)
036  
037  
038  #VolumeID
039  set numVolumeID to (ocidAttributesDict's objectForKey:(refMe's NSFileSystemNumber)) as integer
040  set strSetValue to ("/.vol/" & numVolumeID & "/") as text
041  (ocidOutPutString's appendString:(strSetValue))
042  (ocidOutPutString's appendString:("\n"))
043end repeat
044
045set strMes to "ボリュームIDのリストです"
046set strAns to ocidOutPutString as text
047
048#ダイアログ
049tell current application
050  set strName to name as text
051end tell
052if strName is "osascript" then
053  tell application "Finder"
054    activate
055  end tell
056else
057  tell current application
058    activate
059  end tell
060end if
061set aliasIconPath to (POSIX file "/System/Library/CoreServices/Finder.app/Contents/Resources/Finder.icns") as alias
062try
063  set recordResult to (display dialog strMes with title "戻り値です" default answer strAns buttons {"クリップボードにコピー", "終了", "再実行"} default button "再実行" cancel button "終了" giving up after 20 with icon aliasIconPath without hidden answer) as record
064on error
065  return "エラーしました"
066end try
067if (gave up of recordResult) is true then
068  return "時間切れです"
069end if
070##############################
071#####自分自身を再実行
072##############################
073if button returned of recordResult is "再実行" then
074  tell application "Finder"
075    set aliasPathToMe to (path to me) as alias
076  end tell
077  run script aliasPathToMe with parameters "再実行"
078end if
079##############################
080#####値のコピー
081##############################
082if button returned of recordResult is "クリップボードにコピー" then
083  try
084    set strText to text returned of recordResult as text
085    ####ペーストボード宣言
086    set appPasteboard to refMe's NSPasteboard's generalPasteboard()
087    set ocidText to (refMe's NSString's stringWithString:(strText))
088    appPasteboard's clearContents()
089    appPasteboard's setString:(ocidText) forType:(refMe's NSPasteboardTypeString)
090  on error
091    tell application "Finder"
092      set the clipboard to strText as text
093    end tell
094  end try
095end if
096
097
098return 0
AppleScriptで生成しました

|

外部ディスクで使用中が出た場合に対象プロセスを終了させる

20241013011339_1014x173
これができた時用

AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#
005#
006#
007# com.cocolog-nifty.quicktimer.icefloe
008----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
009
010use AppleScript version "2.8"
011use framework "Foundation"
012use scripting additions
013
014property refMe : a reference to current application
015
016##########################
017## ディスクリスト
018##########################
019set appFileManager to refMe's NSFileManager's defaultManager()
020set ocidResourceKeyArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
021ocidResourceKeyArray's addObject:(refMe's NSURLVolumeIsRemovableKey)
022ocidResourceKeyArray's addObject:(refMe's NSURLVolumeIsEjectableKey)
023ocidResourceKeyArray's addObject:(refMe's NSURLVolumeIsInternalKey)
024ocidResourceKeyArray's addObject:(refMe's NSURLVolumeIsLocalKey)
025ocidResourceKeyArray's addObject:(refMe's NSURLVolumeNameKey)
026ocidResourceKeyArray's addObject:(refMe's NSURLNameKey)
027ocidResourceKeyArray's addObject:(refMe's NSURLPathKey)
028#非表示を除外=1
029set ocidEnuOption to refMe's NSVolumeEnumerationSkipHiddenVolumes
030#全て表示は0
031#set ocidEnuOption to refMe's NSNumber's numberWithInteger:0
032#ディスクリストの取得
033set listDisk to appFileManager's mountedVolumeURLsIncludingResourceValuesForKeys:(ocidResourceKeyArray) options:(ocidEnuOption)
034#ダイアログに渡すリストの初期化
035set listDiskName to {} as list
036#ディスクの数だけ繰り返す
037repeat with itemDisk in listDisk
038  #ディスク名を取得して
039  set listResponse to (itemDisk's getResourceValue:(reference) forKey:(refMe's NSURLVolumeNameKey) |error| :(reference))
040  #テキストで
041  set strDiskName to (item 2 of listResponse) as text
042  #リストに追加していく
043  copy strDiskName to end of listDiskName
044end repeat
045
046
047##########################
048## ダイアログ
049##########################
050set numCntDisk to (count of listDiskName) as integer
051try
052  set strDiskName to (choose from list listDiskName with title "ディスクの選択" with prompt "使用中のファイルリストを出力します" default items (item numCntDisk of listDiskName) OK button name "OK" cancel button name "キャンセル" with multiple selections allowed without empty selection allowed)
053on error
054  log "エラーしました"
055  return
056end try
057if strDiskName is false then
058  return
059end if
060
061##########################
062#コマンド
063set strCommandText to ("/usr/sbin/lsof \"/Volumes/" & strDiskName & "/\" | awk '{print $2}'") as text
064log "\n" & strCommandText & "\n"
065try
066  set strResponse to (do shell script strCommandText) as text
067on error
068  set strMes to "使用中のファイルはありませんでした"
069end try
070##########################
071#戻り値整形
072set ocidResponse to refMe's NSMutableString's stringWithString:(strResponse)
073#改行をUNIXに強制
074set ocidResponse to (ocidResponse's stringByReplacingOccurrencesOfString:("\n\r") withString:("\n"))
075set ocidResponse to (ocidResponse's stringByReplacingOccurrencesOfString:("\r") withString:("\n"))
076set ocidResponse to (ocidResponse's stringByReplacingOccurrencesOfString:("\n\n") withString:("\n"))
077#リストに
078set ocidResponseArray to ocidResponse's componentsSeparatedByString:("\n")
079if (ocidResponseArray's |count|()) = 1 then
080  return "プロセス無し"
081else if (ocidResponseArray's |count|()) > 1 then
082  #1業目削除
083  ocidResponseArray's removeObjectAtIndex:(0)
084end if
085
086
087##########################
088#
089repeat with itemArray in ocidResponseArray
090  set ocidRunningApp to (refMe's NSRunningApplication's runningApplicationWithProcessIdentifier:(itemArray))
091  
092  if ocidRunningApp = (missing value) then
093    log "プロセス無し"
094  else
095    try
096      log ocidRunningApp's terminate()
097    on error
098      log ocidRunningApp's forceTerminate()
099    end try
100  end if
101  
102end repeat
103##########################
104#
105repeat with itemArray in ocidResponseArray
106  set ocidRunningApp to (refMe's NSRunningApplication's runningApplicationWithProcessIdentifier:(itemArray))
107  
108  if ocidRunningApp = (missing value) then
109    log "プロセス無し"
110  else
111    try
112      log ocidRunningApp's forceTerminate()
113    end try
114  end if
115  
116end repeat
117
118##########################
119#
120repeat with itemArray in ocidResponseArray
121  
122  set strCommandText to ("/bin/kill -9 " & itemArray & "") as text
123  log "\n" & strCommandText & "\n"
124  set strExecCommand to ("/bin/zsh -c '" & strCommandText & "'") as text
125  try
126    do shell script strExecCommand
127  on error
128    return "kill でエラーしました"
129  end try
130  
131end repeat
AppleScriptで生成しました

|

DMG to ISO

20240927045940_1292x1234
AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# DMGはハイブリッドが吉
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "AppKit"
010use scripting additions
011
012property refMe : a reference to current application
013
014set appFileManager to refMe's NSFileManager's defaultManager()
015
016#############################
017###ダイアログを前面に出す
018set strName to (name of current application) as text
019if strName is "osascript" then
020  tell application "Finder" to activate
021else
022  tell current application to activate
023end if
024############ デフォルトロケーション
025set appFileManager to refMe's NSFileManager's defaultManager()
026set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
027set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
028set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
029############UTIリスト
030set listUTI to {"com.apple.disk-image-udif"}
031
032
033set strMes to ("DMGファイルを選んでください") as text
034set strPrompt to ("DMGファイルを選んでください") as text
035try
036  ### ファイル選択時
037  set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDefaultLocation) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
038on error
039  log "エラーしました"
040  return "エラーしました"
041end try
042#入力パス
043set strFilePath to (POSIX path of aliasFilePath) as text
044set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
045set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
046set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
047#出力先パス
048set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
049set ocidIsoFilePathURL to ocidBaseFilePathURL's URLByAppendingPathExtension:("iso")
050set strIsoFilePath to ocidIsoFilePathURL's |path| as text
051
052##コマンド
053set strCommandText to ("/bin/zsh -c '/usr/bin/hdiutil convert \"" & strFilePath & "\" -format UDTO -o \"" & strIsoFilePath & "\"'") as «class utf8»
054log strCommandText
055try
056  do shell script strCommandText
057on error
058  return "DMGのフォーマットを確認しましょう"
059end try
060
061##拡張子CDRを取る
062set ocidCdrFilePathURL to ocidBaseFilePathURL's URLByAppendingPathExtension:("iso.cdr")
063set appFileManager to refMe's NSFileManager's defaultManager()
064set listDone to (appFileManager's moveItemAtURL:(ocidCdrFilePathURL) toURL:(ocidIsoFilePathURL) |error| :(reference))
065if (item 1 of listDone) is true then
066  log "正常処理"
067else if (item 2 of listDone) ≠ (missing value) then
068  set strErrorNO to (item 2 of listDone)'s code() as text
069  set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
070  refMe's NSLog("■:" & strErrorNO & strErrorMes)
071  return "エラーしました" & strErrorNO & strErrorMes
072end if
073
074
AppleScriptで生成しました

|

[diskutil attach]マウント時のAGREEMENT(許諾確認画面)をバイパスする(Yを送信する)


サンプルコード

サンプルソース(参考)
行番号ソース
001/bin/echo -e "Y" | /usr/bin/hdiutil attach "$DOWNLOAD_FILE_PATH" -noverify -nobrowse -noautoopen -mountpoint "$STR_MOUNTPOINT_PATH" | echo
AppleScriptで生成しました

サンプルコード

サンプルソース(参考)
行番号ソース
001/bin/echo  -e "Y" | /usr/bin/hdiutil attach "$DOWNLOAD_FILE_PATH"  -noverify -nobrowse -noautoopen -mountpoint "$STR_MOUNTPOINT_PATH" | /bin/echo  -e "\n"  
002
AppleScriptで生成しました

サンプルコード

サンプルソース(参考)
行番号ソース
001/bin/echo  -e "Y" | /usr/bin/hdiutil attach "$DOWNLOAD_FILE_PATH"  -noverify -nobrowse -noautoopen -mountpoint "$STR_MOUNTPOINT_PATH" |
AppleScriptで生成しました

サンプルコード

サンプルソース(参考)
行番号ソース
001/bin/echo -e 'Y' | /usr/bin/hdiutil attach "$DOWNLOAD_FILE_PATH"  -noverify -nobrowse -noautoopen -mountpoint "$STR_MOUNTPOINT_PATH" |
002
AppleScriptで生成しました

サンプルコード

サンプルソース(参考)
行番号ソース
001/bin/echo -e 'yes' | /usr/bin/hdiutil attach "$DOWNLOAD_FILE_PATH"  -noverify -nobrowse -noautoopen -mountpoint "$STR_MOUNTPOINT_PATH" 
002
AppleScriptで生成しました

サンプルコード

サンプルソース(参考)
行番号ソース
001yes | PAGER=cat /usr/bin/hdiutil attach "$DOWNLOAD_FILE_PATH"  -noverify -nobrowse -noautoopen -mountpoint "$STR_MOUNTPOINT_PATH" 
AppleScriptで生成しました

|

[diskutil] 各種ディスク・ボリューム情報をplistに保存して値を取得する


AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004#
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.8"
007use framework "Foundation"
008use framework "AppKit"
009use scripting additions
010
011property refMe : a reference to current application
012
013##########################################
014# 【C-1】 diskutilコマンドでPLISTを作成する
015#ROOTで取得する場合
016#log doMakeDiskUtilPlist("/")
017#可変可能なDATA で取得する場合
018log doMakeDiskUtilPlist("/System/Volumes/Data")
019
020
021##########################################
022# 【C-2】PLISTから値を取得する
023##全量
024set numTotalSize to doGetPlistKeyPath("~/Documents/Apple/Diskutil/diskutil_info.plist", "APFSContainerSize") as real
025##残量
026set numContainerFree to doGetPlistKeyPath("~/Documents/Apple/Diskutil/diskutil_info.plist", "APFSContainerFree") as real
027##
028set intGB to "1073741824" as integer
029set intGB to "1000000000" as integer
030set numTotalSize to (numTotalSize / intGB) as integer
031set numContainerFree to (numContainerFree / intGB) as integer
032log numTotalSize
033log numContainerFree
034
035##VolumeUUID
036log doGetPlistKeyPath("~/Documents/Apple/Diskutil/diskutil_info.plist", "VolumeUUID") as text
037##DiskUUID
038log doGetPlistKeyPath("~/Documents/Apple/Diskutil/diskutil_info.plist", "DiskUUID") as text
039##DeviceNode
040log doGetPlistKeyPath("~/Documents/Apple/Diskutil/diskutil_info.plist", "DeviceNode") as text
041#Encryption
042log doGetPlistKeyPath("~/Documents/Apple/Diskutil/diskutil_info.plist", "Encryption") as text
043#FileVault
044log doGetPlistKeyPath("~/Documents/Apple/Diskutil/diskutil_info.plist", "FileVault") as text
045
046##########################################
047# 【B-2】 パスとkeypath指定で値を取得する
048to doGetPlistKeyPath(argFilePath, argKeyPath)
049  #パス
050  set strFilePath to argFilePath as text
051  set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
052  set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
053  set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:(false)
054  ##
055  #レコードを読み込み
056  set listResponse to refMe's NSDictionary's alloc()'s initWithContentsOfURL:(ocidFilePathURL) |error| :(reference)
057  if (item 2 of listResponse) = (missing value) then
058    log "initWithContentsOfURL 正常処理"
059    set ocidPlistDict to (item 1 of listResponse)
060  else if (item 2 of listResponse) ≠ (missing value) then
061    log (item 2 of listResponse)'s code() as text
062    log (item 2 of listResponse)'s localizedDescription() as text
063    log "initWithContentsOfURL エラーしました"
064    return false
065  end if
066  #
067  set ocidValue to (ocidPlistDict's valueForKeyPath:(argKeyPath))
068  return ocidValue
069  
070end doGetPlistKeyPath
071
072##########################################
073# 【B-1】電源関係のPLISTを出力する
074to doMakeDiskUtilPlist(argRootPath)
075  #保存先を先に確保する
076  set appFileManager to refMe's NSFileManager's defaultManager()
077  set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDocumentDirectory) inDomains:(refMe's NSUserDomainMask))
078  set ocidDocumentDirPathURL to ocidURLsArray's firstObject()
079  set ocidSaveDirPathURL to ocidDocumentDirPathURL's URLByAppendingPathComponent:("Apple/Diskutil") isDirectory:(true)
080  #フォルダを作る
081  set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
082  # 777-->511 755-->493 700-->448 766-->502
083  ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
084  set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error| :(reference)
085  if (item 1 of listDone) is true then
086    log "createDirectoryAtURL 正常処理"
087    set ocidLabelNo to refMe's NSNumber's numberWithInteger:(2)
088    set listDone to (ocidSaveDirPathURL's setResourceValue:(ocidLabelNo) forKey:(refMe's NSURLLabelNumberKey) |error| :(reference))
089    if (item 1 of listDone) is true then
090      log "setResourceValue 正常処理"
091    else if (item 2 of listDone) ≠ (missing value) then
092      log (item 2 of listDone)'s code() as text
093      log (item 2 of listDone)'s localizedDescription() as text
094      return "setResourceValue エラーしました"
095    end if
096  else if (item 2 of listDone) ≠ (missing value) then
097    log (item 2 of listDone)'s code() as text
098    log (item 2 of listDone)'s localizedDescription() as text
099    log "createDirectoryAtURL エラーしました"
100    return false
101  end if
102  #ファイルを作成する
103  set ocidInfoFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:("_このフォルダは削除しても大丈夫です.txt") isDirectory:(true)
104  set ocidInfoText to refMe's NSString's stringWithString:("このフォルダは削除しても大丈夫です")
105  set listDone to ocidInfoText's writeToURL:(ocidInfoFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
106  if (item 1 of listDone) is true then
107    log "writeToURL 正常終了"
108  else if (item 1 of listDone) is false then
109    log (item 2 of listDone)'s localizedDescription() as text
110    log "writeToURL保存に失敗しました"
111    return false
112  end if
113  #################################
114  #everything
115  set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:("diskutil_info.plist") isDirectory:(false)
116  set strSaveFilePathURL to (ocidSaveFilePathURL's |path|()) as text
117  #コマンド実行
118  set strCommandText to ("/bin/zsh -c '/usr/sbin/diskutil info -plist \"" & argRootPath & "\" > \"" & strSaveFilePathURL & "\"'") as text
119  log strCommandText
120  try
121    do shell script strCommandText
122  on error
123    return false
124  end try
125  return true
126  (* ■ AllKeys
127DeviceBlockSize
128VolumeSize
129Writable
130RAIDSlice
131APFSContainerSize
132APFSSnapshot
133EjectableOnly
134CanBeMadeBootable
135DeviceNode
136FileVault
137Removable
138VolumeAllocationBlockSize
139GlobalPermissionsEnabled
140SupportsGlobalPermissionsDisable
141RemovableMediaOrExternalDevice
142APFSVolumeGroupID
143MountPoint
144BusProtocol
145VolumeUUID
146Fusion
147Content
148SystemImage
149FreeSpace
150WritableVolume
151FilesystemUserVisibleName
152EjectableMediaAutomaticUnderSoftwareControl
153IORegistryEntryName
154IOKitSize
155SMARTStatus
156APFSContainerFree
157AESHardware
158Locked
159SMARTDeviceSpecificKeysMayVaryNotGuaranteed
160Sealed
161APFSContainerReference
162TotalSize
163DiskUUID
164RecoveryDeviceIdentifier
165VolumeName
166Bootable
167EncryptionThisVolumeProper
168MediaName
169SolidState
170FilesystemName
171DeviceIdentifier
172FilesystemType
173RAIDMaster
174Internal
175WholeDisk
176BooterDeviceIdentifier
177APFSPhysicalStores
178Size
179OSInternalMedia
180CapacityInUse
181Ejectable
182Encryption
183MediaType
184RemovableMedia
185ParentWholeDisk
186PartitionMapPartition
187CanBeMadeBootableRequiresDestroy
188DeviceTreePath
189WritableMedia
190  *)
191end doMakeDiskUtilPlist
AppleScriptで生成しました

|

ディスク残を求める


サンプルコード

サンプルソース(参考)
行番号ソース
001tell application "System Events"
002  set strVolumeName to (name of startup disk) as text
003  tell startup disk
004    set numDiskCapacity to capacity as real
005    set numFreeSpace to free space as real
006  end tell
007end tell
008#正解がわからない
009set intGB to "1073741824" as integer
010set intGB to "1000000000" as integer
011set numTotalSize to (numDiskCapacity / intGB) as integer
012set numContainerFree to (numFreeSpace / intGB) as integer
013
014log "Dataディスク容量:" & numTotalSize & "GB"
015log "Dataディスク残:" & numContainerFree & "GB"
AppleScriptで生成しました

|

[bash]デバイス・ディスク ボリュームの調査用データ収集


あくまでも参考にしてください

サンプルソース(参考)
行番号ソース
001#! /bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003########################################
004###STAT
005STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
006
007#/bin/echo "LOG保存先 処理開始"
008STR_DATE=$(/bin/date +"%Y%m%d_%H%M%S")
009STR_SAVE_LOG_DIR="/Users/${STAT_USR}/Documents/Apple/diskutil"
010STR_SAVE_LOG_PATH="${STR_SAVE_LOG_DIR}/${STR_DATE}.log"
011/bin/mkdir -p "$STR_SAVE_LOG_DIR"
012/bin/chmod 777 "$STR_SAVE_LOG_DIR"
013/usr/bin/touch "/Users/${STAT_USR}/Documents/Apple/diskutil/_このフォルダは削除しても大丈夫です.txt"
014/bin/echo "LOG保存先 処理開始 $STR_DATE" >"$STR_SAVE_LOG_PATH"
015
016#################################################
017STR_HOSTNAME=$(/bin/hostname)
018/bin/echo "ホスト名(host): $STR_HOSTNAME" >>"$STR_SAVE_LOG_PATH"
019###管理者インストールしているか?チェック
020USER_WHOAMI=$(/usr/bin/whoami)
021/bin/echo "実行ユーザー(whoami): $USER_WHOAMI" >>"$STR_SAVE_LOG_PATH"
022### path to me
023SCRIPT_PATH="${BASH_SOURCE[0]}"
024/bin/echo "\"$SCRIPT_PATH\"" >>"$STR_SAVE_LOG_PATH"
025###実行しているユーザー名
026CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
027/bin/echo "コンソールユーザー(scutil): $CONSOLE_USER" >>"$STR_SAVE_LOG_PATH"
028###実行しているユーザー名
029HOME_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
030/bin/echo "実行ユーザー(HOME): $HOME_USER" >>"$STR_SAVE_LOG_PATH"
031###logname
032LOGIN_NAME=$(/usr/bin/logname)
033/bin/echo "ログイン名(logname): $LOGIN_NAME" >>"$STR_SAVE_LOG_PATH"
034###UID
035USER_NAME=$(/usr/bin/id -un)
036/bin/echo "ユーザーid(short name): $USER_NAME" >>"$STR_SAVE_LOG_PATH"
037###UID
038USER_ID=$(/usr/bin/id -u)
039/bin/echo "ユーザーid(id): $USER_ID" >>"$STR_SAVE_LOG_PATH"
040#console
041/bin/echo "STAT_USR(console): $STAT_USR" >>"$STR_SAVE_LOG_PATH"
042STR_TMP_DIR=$(/usr/bin/mktemp -d)
043STR_TMP_DIR_PATH=$(/usr/bin/dirname "$STR_TMP_DIR")
044/bin/echo "テンポラリー : $STR_TMP_DIR_PATH" >>"$STR_SAVE_LOG_PATH"
045
046########################################
047#/bin/echo "ioreg 処理開始"
048STR_SAVE_DIR_PATH="/Users/${STAT_USR}/Documents/Apple/IOreg/$STR_DATE"
049/bin/mkdir -p "$STR_SAVE_DIR_PATH"
050/bin/chmod 777 "$STR_SAVE_DIR_PATH"
051/usr/bin/touch "/Users/${STAT_USR}/Documents/Apple/IOreg/_このフォルダは削除しても大丈夫です.txt"
052##ハードウェア情報
053/usr/sbin/ioreg -c IOPlatformExpertDevice -a | /usr/bin/tee "$STR_SAVE_DIR_PATH/IOPlatformExpertDevice.plist" >/dev/null
054STR_IOPlatformUUID=$(/usr/libexec/PlistBuddy -c "Print:IORegistryEntryChildren:0:IOPlatformUUID" "$STR_SAVE_DIR_PATH/IOPlatformExpertDevice.plist")
055STR_IOPlatformSerialNumber=$(/usr/libexec/PlistBuddy -c "Print:IORegistryEntryChildren:0:IOPlatformSerialNumber" "$STR_SAVE_DIR_PATH/IOPlatformExpertDevice.plist")
056STR_IORegistryEntryName=$(/usr/libexec/PlistBuddy -c "Print:IORegistryEntryChildren:0:IORegistryEntryName" "$STR_SAVE_DIR_PATH/IOPlatformExpertDevice.plist")
057{
058  /bin/echo "ioreg IOPlatformUUID $STR_IOPlatformUUID"
059  /bin/echo "ioreg IOPlatformSerialNumber $STR_IOPlatformSerialNumber"
060  /bin/echo "ioreg IORegistryEntryName $STR_IORegistryEntryName"
061} >>"$STR_SAVE_LOG_PATH"
062
063########################################
064#/bin/echo "system_profiler 処理開始"
065STR_SAVE_DIR_PATH="/Users/${STAT_USR}/Documents/Apple/system_profiler/$STR_DATE"
066/bin/mkdir -p "$STR_SAVE_DIR_PATH"
067/bin/chmod 777 "$STR_SAVE_DIR_PATH"
068/usr/bin/touch "/Users/${STAT_USR}/Documents/Apple/system_profiler/_このフォルダは削除しても大丈夫です.txt"
069##ハードウェア情報
070/usr/sbin/system_profiler SPHardwareDataType -xml | /usr/bin/tee "$STR_SAVE_DIR_PATH/SPHardwareDataType.plist" >/dev/null
071STR_machine_model=$(/usr/libexec/PlistBuddy -c "Print:0:_items:0:machine_model" "$STR_SAVE_DIR_PATH/SPHardwareDataType.plist")
072STR_model_number=$(/usr/libexec/PlistBuddy -c "Print:0:_items:0:model_number" "$STR_SAVE_DIR_PATH/SPHardwareDataType.plist")
073STR_serial_number=$(/usr/libexec/PlistBuddy -c "Print:0:_items:0:serial_number" "$STR_SAVE_DIR_PATH/SPHardwareDataType.plist")
074{
075  /bin/echo "system_profiler $STR_machine_model"
076  /bin/echo "system_profiler $STR_model_number"
077  /bin/echo "system_profiler $STR_serial_number"
078} >>"$STR_SAVE_LOG_PATH"
079
080########################################
081#/bin/echo "MODEL NAME 処理開始"
082STR_CONFIG_CODE="${STR_serial_number: -4}"
083/bin/echo "configCode: $STR_CONFIG_CODE" >>"$STR_SAVE_LOG_PATH"
084#XML取得
085STR_URL="https://support-sp.apple.com/sp/product?cc=$STR_CONFIG_CODE&lang=ja_JP"
086STR_XML=$(/usr/bin/curl -s "$STR_URL" 2>/dev/null)
087#XMLからモデル名を取得
088STR_MODEL_NAME=$(/bin/echo "$STR_XML" | /usr/bin/xmllint --xpath 'string(//configCode)' -)
089/bin/echo "モデル名: $STR_MODEL_NAME" >>"$STR_SAVE_LOG_PATH"
090
091########################################
092#/bin/echo "os version 処理開始"
093STR_OS_VER=$(/usr/sbin/sysctl -n kern.osproductversion)
094/bin/echo "os version: $STR_OS_VER" >>"$STR_SAVE_LOG_PATH"
095
096########################################
097{
098  /bin/echo "■ネットワーク------" >>"$STR_SAVE_LOG_PATH"
099  /bin/echo "route default------"
100  /sbin/route -n get default
101} >>"$STR_SAVE_LOG_PATH"
102STR_RESPONSE=$(/usr/sbin/networksetup -listallnetworkservices)
103IFS=$'\n' read -rd '' -a LIST_SERVEICE <<<"$STR_RESPONSE"
104for ((i = 1; i < ${#LIST_SERVEICE[@]}; i++)); do
105  ITEM_SERVICE="${LIST_SERVEICE[$i]}"
106  /bin/echo "listallnetworkservices  $ITEM_SERVICE ------" >>"$STR_SAVE_LOG_PATH"
107  /usr/sbin/networksetup -getinfo "$ITEM_SERVICE" >>"$STR_SAVE_LOG_PATH"
108done
109{
110  /bin/echo "ARP------"
111  /usr/sbin/arp -a
112  #
113  /bin/echo "NDP IPV6------"
114  /usr/sbin/ndp -a
115} >>"$STR_SAVE_LOG_PATH"
116
117### Wireless Diagnostics command
118#これはSUDO必要なので考慮すること
119/usr/bin/sudo /usr/bin/wdutil info | /usr/bin/tee -a "$STR_SAVE_LOG_PATH" >/dev/null
120########################################
121#セキュリティ
122{
123  /bin/echo "fdesetup------"
124  /usr/bin/fdesetup status
125  /bin/echo "csrutil------"
126  /usr/bin/csrutil status
127  /bin/echo "spctl------"
128  /usr/sbin/spctl --verbose --status
129  /bin/echo "profiles------"
130  /usr/bin/profiles status -type enrollment
131} >>"$STR_SAVE_LOG_PATH"
132
133########################################
134#ボリューム 調査
135/bin/echo "diskutil------" >>"$STR_SAVE_LOG_PATH"
136/usr/sbin/diskutil list -plist >"${STR_SAVE_LOG_DIR}/com.apple.diskutil.list.plist"
137/usr/sbin/diskutil cs list -plist >"${STR_SAVE_LOG_DIR}/com.apple.diskutil.cs.plist"
138/usr/sbin/diskutil apfs list -plist >"${STR_SAVE_LOG_DIR}/com.apple.diskutil.afplist.plist"
139/usr/sbin/diskutil apfs listUsers / -plist >"${STR_SAVE_LOG_DIR}/com.apple.diskutil.listUsers.plist"
140/usr/sbin/diskutil apfs listSnapshots / -plist >"${STR_SAVE_LOG_DIR}/com.apple.diskutil.listSnapshots.plist"
141/usr/sbin/diskutil info -all >>"$STR_SAVE_LOG_PATH"
142#
143LIST_DEVICE_NAME=$(/bin/df -H | grep '^/dev/disk' | awk '{print $1}')
144for ITEM_DEVICE_NAME in $LIST_DEVICE_NAME; do
145  STR_DEVICE_ID=$(basename "$ITEM_DEVICE_NAME")
146  /usr/sbin/diskutil info -plist "$ITEM_DEVICE_NAME" >"${STR_SAVE_LOG_DIR}/com.apple.diskutil.info.${STR_DEVICE_ID}.plist"
147done
148
149/bin/echo "GUID_partition_scheme------"
150/usr/sbin/diskutil list | /usr/bin/grep GUID_partition_scheme >>"$STR_SAVE_LOG_PATH"
151{
152  /bin/echo "IOSTAT------"
153  /usr/sbin/iostat
154  /bin/echo "MOUNT------"
155  /sbin/mount
156  /bin/echo "DF------"
157  /bin/df -H
158  /bin/echo "dev------"
159  /bin/ls -l /dev | grep disk
160  /bin/echo "dmc------"
161  /usr/bin/dmc status /
162} >>"$STR_SAVE_LOG_PATH"
163/usr/bin/dmc status / -json >"${STR_SAVE_LOG_DIR}/com.apple.dmc.status.json"
164
165#要SUDO
166/bin/echo "SUDO diskutil------" >>"$STR_SAVE_LOG_PATH"
167/usr/bin/sudo /usr/sbin/diskutil listClients | tee -a "$STR_SAVE_LOG_PATH" >/dev/null
168/bin/echo "SUDO BootCacheControl------" >>"$STR_SAVE_LOG_PATH"
169/usr/bin/sudo /usr/sbin/BootCacheControl statistics | tee -a "$STR_SAVE_LOG_PATH" >/dev/null
170
171for i in {0..9}; do
172  /bin/echo "SUDO gpt---DISK${i}---" | tee -a "$STR_SAVE_LOG_PATH" >/dev/null
173  /usr/bin/sudo /usr/sbin/gpt -rvvvv show /dev/disk"$i" | tee -a "$STR_SAVE_LOG_PATH" >/dev/null
174done
175/bin/echo "処理終了"
176/usr/bin/open "$STR_SAVE_LOG_DIR"
177/usr/bin/open "$STR_SAVE_LOG_PATH"
178exit 0
AppleScriptで生成しました

|

iOS Simulatorディスクイメージをマウントする


あくまでも参考にしてください

サンプルソース(参考)
行番号ソース
001#! /bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003#################################################
004/bin/echo "iOS Simulatorディスクイメージをマウントします"
005/bin/echo "管理者権限が必要です"
006#設定項目 DMBのパス iOS 17.4
007STR_DMG_PATH="/Library/Developer/CoreSimulator/Images/751E2549-968B-4F2C-BA1F-CF25DF4E0E95.dmg"
008#マウント シャドウ 検証無し
009if
010  /usr/bin/sudo /usr/bin/hdiutil attach "${STR_DMG_PATH}" -noverify -nobrowse -noautoopen -mountpoint "/Volumes/iOS 17.4 21E213 Simulator"
011then
012  /bin/echo "マウントしました"
013else
014  /bin/echo "マウントに失敗しました"
015fi
016
017
018exit 0
AppleScriptで生成しました

17.2
あくまでも参考にしてください

サンプルソース(参考)
行番号ソース
001#! /bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003#################################################
004/bin/echo "iOS Simulatorディスクイメージをマウントします"
005/bin/echo "管理者権限が必要です"
006#設定項目 DMBのパス iOS 17.2
007STR_DMG_PATH="/Library/Developer/CoreSimulator/Images/F15D6587-135C-4D45-89D5-D1B305090125.dmg"
008#マウント シャドウ 検証無し
009if
010  /usr/bin/sudo /usr/bin/hdiutil attach "${STR_DMG_PATH}" -noverify -nobrowse -noautoopen -mountpoint "/Volumes/iOS 17.2 21E213 Simulator"
011then
012  /bin/echo "マウントしました"
013else
014  /bin/echo "マウントに失敗しました"
015fi
016
017exit 0
AppleScriptで生成しました

|

iOS Simulatorディスクイメージをアンマウントする


あくまでも参考にしてください

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

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# Xcodeがマウントする ios Simulatorをアンマウントします
004# com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006##自分環境がos12なので2.8にしているだけです
007use AppleScript version "2.8"
008use framework "Foundation"
009use scripting additions
010
011property refMe : a reference to current application
012############################
013#######ディスクの情報を取得する
014############################
015
016set appFileManager to refMe's NSFileManager's defaultManager()
017set ocidResourceKeyArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0
018ocidResourceKeyArray's addObject:(refMe's NSURLVolumeIsRemovableKey)
019ocidResourceKeyArray's addObject:(refMe's NSURLVolumeIsEjectableKey)
020ocidResourceKeyArray's addObject:(refMe's NSURLVolumeIsInternalKey)
021ocidResourceKeyArray's addObject:(refMe's NSURLVolumeIsLocalKey)
022ocidResourceKeyArray's addObject:(refMe's NSURLVolumeNameKey)
023ocidResourceKeyArray's addObject:(refMe's NSURLNameKey)
024ocidResourceKeyArray's addObject:(refMe's NSURLPathKey)
025
026#非表示を除外=1
027#set ocidEnuOption to refMe's NSVolumeEnumerationSkipHiddenVolumes
028#全て表示=0
029set ocidEnuOption to refMe's NSNumber's numberWithInteger:((0) as integer)
030set listDisk to appFileManager's mountedVolumeURLsIncludingResourceValuesForKeys:ocidResourceKeyArray options:ocidEnuOption
031
032
033
034############################
035#######ディスクの数だけ繰り返し
036############################
037
038repeat with itemDisk in listDisk
039  set listResponse to (itemDisk's getResourceValue:(reference) forKey:(refMe's NSURLVolumeNameKey) |error| :(reference))
040  if (item 3 of listResponse) ≠ (missing value) then
041    log (item 3 of listResponse)'s code() as text
042    log (item 3 of listResponse)'s localizedDescription() as text
043    return "リソースの取得でエラーしました"
044  else if (item 1 of listResponse) is true then
045    log "正常処理"
046    set ocidDiskName to (item 2 of listResponse)
047    ##########################################
048    ##もしもディスク名にSimulatorの文字があれば
049    if (ocidDiskName as text) contains "Simulator" then
050      ####パスを取得して
051      set itemURLKeyArray to (itemDisk's getResourceValue:(reference) forKey:(refMe's NSURLPathKey) |error| :(reference))
052      set ocidDiskPath to (item 2 of itemURLKeyArray)
053      set ocidFilePath to ocidDiskPath's stringByExpandingTildeInPath()
054      ####URLに
055      set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath isDirectory:false)
056      ######アンマウントする
057      set appNSWorkspace to refMe's NSWorkspace's sharedWorkspace()
058      set listDone to (appNSWorkspace's unmountAndEjectDeviceAtURL:ocidFilePathURL  |error| :(reference))
059      if (item 2 of listDone) ≠ (missing value) then
060        log (item 2 of listDone)'s localizedDescription() as text
061        log (item 2 of listDone)'s localizedRecoverySuggestion() as text
062        return "アンマウントに失敗しました"
063      else if (item 1 of listDone) = (true) then
064        log "正常終了\n" & (ocidDiskName as text) & "をアンマウントしました"
065      end if
066    end if
067  end if
068  
069end repeat
070
071
AppleScriptで生成しました

あくまでも参考にしてください

サンプルソース(参考)
行番号ソース
001#! /bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003#################################################
004/bin/echo "iOS Simulatorディスクイメージをアンマウントします"
005STR_VOLUME_NAME=$(/bin/df -h | grep "Simulator" | sed 's/^.*\///g')
006if [ -n "$STR_VOLUME_NAME" ]; then
007  /bin/echo "$STR_VOLUME_NAME をアンマウントします"
008  STR_MOUNTPOINT_PATH="/Volumes/${STR_VOLUME_NAME}"
009  if
010    /usr/bin/hdiutil unmount "$STR_MOUNTPOINT_PATH" -force
011  then
012    /bin/echo "アンマウントしました"
013  else
014    /bin/echo "アンマウントに失敗しました"
015    STR_MOUNTPOINT_PATH=$(/bin/df -h | grep "Simulator" | awk '{ print $9 }')
016    if [ -n "$STR_VOLUME_NAME" ]; then
017      /bin/echo "アンマウントします"
018      if
019        /usr/bin/hdiutil unmount "$STR_MOUNTPOINT_PATH" -force
020      then
021        /bin/echo "アンマウントしました"
022      else
023        /bin/echo "アンマウントに失敗しました"
024      fi
025    fi
026  fi
027else
028  /bin/echo "すでにアンマウントされているようです"
029fi
030exit 0
AppleScriptで生成しました

あくまでも参考にしてください

サンプルソース(参考)
行番号ソース
001#! /bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003#################################################
004/bin/echo "iOS Simulatorディスクイメージをアンマウントします"
005STR_VOLUME_NAME=$(/bin/df -h | grep "Simulator" | sed 's/^.*\///g')
006if [ -n "$STR_VOLUME_NAME" ]; then
007  /bin/echo "$STR_VOLUME_NAME をアンマウントします"
008  STR_MOUNTPOINT_PATH="/Volumes/${STR_VOLUME_NAME}"
009  if
010    /usr/bin/hdiutil detach "$STR_MOUNTPOINT_PATH" -force
011  then
012    /bin/echo "アンマウントしました"
013  else
014    /bin/echo "アンマウントに失敗しました"
015    STR_MOUNTPOINT_PATH=$(/bin/df -h | grep "Simulator" | awk '{ print $9 }')
016    if [ -n "$STR_VOLUME_NAME" ]; then
017      /bin/echo "アンマウントします"
018      if
019        /usr/bin/hdiutil detach "$STR_MOUNTPOINT_PATH" -force
020      then
021        /bin/echo "アンマウントしました"
022      else
023        /bin/echo "アンマウントに失敗しました"
024      fi
025    fi
026  fi
027else
028  /bin/echo "すでにアンマウントされているようです"
029fi
030exit 0
AppleScriptで生成しました

|

より以前の記事一覧

その他のカテゴリー

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