Admin Users

ローカルMacのユーザーリストの収集


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
009use AppleScript version "2.8"
010use framework "Foundation"
011use framework "AppKit"
012use scripting additions
013
014property refMe : a reference to current application
015
016
017##ADMINを含む
018set strCommandText to ("/bin/bash -c '/usr/bin/dscl . list /Users | grep -v \"^_\" | grep -v \"daemon\" | grep -v \"nobody\" | grep -v \"root\"'") as text
019log strCommandText
020try
021  set strResponse to (do shell script strCommandText) as text
022on error
023  return "コマンドエラー"
024end try
025##改行コード判定
026set boolContainR to (strResponse contains "\r") as boolean
027set boolContainN to (strResponse contains "\n") as boolean
028if boolContainR is true then
029  set strOrgDelim to AppleScript's text item delimiters
030  set AppleScript's text item delimiters to "\r"
031  set listUserName to (every text item of strResponse) as list
032  set AppleScript's text item delimiters to strOrgDelim
033else if boolContainN is true then
034  set strOrgDelim to AppleScript's text item delimiters
035  set AppleScript's text item delimiters to "\r"
036  set listUserName to (every text item of strResponse) as list
037  set AppleScript's text item delimiters to strOrgDelim
038else
039  log "ユーザーは1名のみ"
040  set listUserName to {} as list
041  copy strResponse to end of listUserName
042end if
043log listUserName as list
044return listUserName
045
046
AppleScriptで生成しました


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
009use AppleScript version "2.8"
010use framework "Foundation"
011use framework "AppKit"
012use scripting additions
013
014property refMe : a reference to current application
015
016##ADMINを含まない
017set strCommandText to ("/bin/bash -c '/usr/bin/dscl . list /Users | grep -v \"^_\" | grep -v \"admin\" | grep -v \"daemon\" | grep -v \"nobody\" | grep -v \"root\"'") as text
018log strCommandText
019try
020  set strResponse to (do shell script strCommandText) as text
021on error
022  return "コマンドエラー"
023end try
024
025##改行コード判定
026set boolContainR to (strResponse contains "\r") as boolean
027set boolContainN to (strResponse contains "\n") as boolean
028if boolContainR is true then
029  set strOrgDelim to AppleScript's text item delimiters
030  set AppleScript's text item delimiters to "\r"
031  set listUserName to (every text item of strResponse) as list
032  set AppleScript's text item delimiters to strOrgDelim
033else if boolContainN is true then
034  set strOrgDelim to AppleScript's text item delimiters
035  set AppleScript's text item delimiters to "\r"
036  set listUserName to (every text item of strResponse) as list
037  set AppleScript's text item delimiters to strOrgDelim
038else
039  log "ユーザーは1名のみ"
040  set listUserName to {} as list
041  copy strResponse to end of listUserName
042end if
043log listUserName as list
044return listUserName
045
046
AppleScriptで生成しました

|

[AppleScript] UIDを取得する


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
007##自分環境がos12なので2.8にしているだけです
008use AppleScript version "2.8"
009use framework "Foundation"
010use scripting additions
011
012property refMe : a reference to current application
013####################################
014##system infoを使う
015set recordSystemInfo to (system info) as record
016set strUID to (user ID of recordSystemInfo) as text
017log strUID
018
019####################################
020##ASOCを使う
021#Unixパス
022set ocidHomeDirPath to refMe's NSHomeDirectory()
023#NSURL この方法だとユーザー名を指定してUIDを取得できる
024#ユーザー名ショート
025set ocidUserName to refMe's NSUserName()
026set appFileManager to refMe's NSFileManager's defaultManager()
027#ホームディレクトリ
028set ocidHomeDirPathURL to appFileManager's homeDirectoryForUser:(ocidUserName)
029set ocidHomeDirPath to ocidHomeDirPathURL's |path|()
030#アトリビュートを取得して
031set listResponse to appFileManager's attributesOfItemAtPath:(ocidHomeDirPath) |error| :(reference)
032if (item 2 of listResponse) = (missing value) then
033  log "正常処理"
034  set ocidAttarDict to (item 1 of listResponse)
035else if (item 2 of listResponse) ≠ (missing value) then
036  log (item 2 of listResponse)'s code() as text
037  log (item 2 of listResponse)'s localizedDescription() as text
038  return "エラーしました"
039end if
040#UIDを取得する
041log (ocidAttarDict's valueForKey:(refMe's NSFileOwnerAccountID)) as text
042
043
044#コンソールのIDを取得する方法
045set strDevDirPath to ("/dev/console") as text
046set ocidDevDirPathStr to refMe's NSString's stringWithString:(strDevDirPath)
047set ocidDevDirPath to ocidDevDirPathStr's stringByStandardizingPath()
048#アトリビュートを取得して
049set listResponse to appFileManager's attributesOfItemAtPath:(ocidDevDirPath) |error| :(reference)
050if (item 2 of listResponse) = (missing value) then
051  log "正常処理"
052  set ocidAttarDict to (item 1 of listResponse)
053else if (item 2 of listResponse) ≠ (missing value) then
054  log (item 2 of listResponse)'s code() as text
055  log (item 2 of listResponse)'s localizedDescription() as text
056  return "エラーしました"
057end if
058#UIDを取得する
059return (ocidAttarDict's valueForKey:(refMe's NSFileOwnerAccountID)) as text
060
061
AppleScriptで生成しました

|

[AppleScript] ユーザー情報の取得


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 scripting additions
008
009##システムイベント current user
010tell application "System Events"
011  tell current user
012    set strStrHomeDirPath to home directory as text
013    set strUserName to name as text
014    set strUserNameLong to full name as text
015  end tell
016end tell
017##system attributeを使う
018set listSystemAttr to (system attribute) as list
019set strUserNameS to (system attribute "USER")
020set strStrHomeDirPath to (system attribute "HOME")
021
022##system infoを使う
023set recordSystemInfo to (system info) as record
024set strUserName to (short user name of recordSystemInfo) as text
025set strUserNameLong to (long user name of recordSystemInfo) as text
026set strUID to (user ID of recordSystemInfo) as text
027#ここだけエイリアスが戻り値
028set aliasHomeDirPath to (home directory of recordSystemInfo) as alias
029set strStrHomeDirPath to (POSIX path of aliasHomeDirPath) as text
030
031set strComputerName to (computer name of recordSystemInfo) as text
032set strHostName to (host name of recordSystemInfo) as text
033
034
035return strUserName
AppleScriptで生成しました

|

WWWグループにユーザー(自分)を追加する


#!/bin/bash -e
#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 "↑を実行してください"
  ###実行しているユーザー名
CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
/bin/echo "コンソールユーザー(scutil): $CONSOLE_USER"
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"
  ###STAT
STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
/bin/echo "STAT_USR(console): $STAT_USR"
fi

#######
#ローカルアカウントを調べる
STR_LOCALUSER=$(/usr/bin/dscl . list /Users | grep -v '^_' | grep -v 'admin' | grep -v 'daemon' | grep -v 'nobody' | grep -v 'root')
/bin/echo "ローカルユーザーリスト:" "$STR_LOCALUSER"
####WWWグループにユーザーを追加
STR_GROUPS_USER=$(/usr/bin/dscl . read /Groups/_www GroupMembership)
if [[ $STR_GROUPS_USER == *"$CONSOLE_USER"* ]]; then
echo "GroupMembershipに $CONSOLE_USER はすでに含まれています"
else
echo "GroupMembershipに $CONSOLE_USER は含まれていません"
/usr/bin/sudo /usr/bin/dscl . append /Groups/_www GroupMembership "$CONSOLE_USER"
STR_USER_UUID=$(/usr/bin/dscl . -read "$HOME" GeneratedUID | awk 'NF > 1 {print $NF}')
/usr/bin/sudo /usr/bin/dscl . append /Groups/_www GroupMembers "$STR_USER_UUID"
/usr/bin/dscl . read /Groups/_www GroupMembership
/usr/bin/dscl . read /Groups/_www GroupMembers
fi


exit 0


|

[plist]ユーザーの言語設定を取得する

Bash

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

STR_USR_LANG=$(/usr/bin/plutil -extract AppleLanguages.0 raw -expect string $HOME/Library/Preferences/.GlobalPreferences.plist ) 
/bin/echo "plutil:ユーザー設定の第1言語は $STR_USR_LANG です"

STR_USR_LANG=$(/usr/bin/defaults read $HOME/Library/Preferences/.GlobalPreferences AppleLanguages| tr -d "[:space:][(][)]\""|cut -d , -f 1 )
/bin/echo "defaults:ユーザー設定の第1言語は $STR_USR_LANG です"

STR_USR_LANG=$(/usr/libexec/PlistBuddy -c "Print:AppleLanguages:0" "$HOME/Library/Preferences/.GlobalPreferences.plist")
/bin/echo "PlistBuddy:ユーザー設定の第1言語は $STR_USR_LANG です"

exit 0


AppleScript

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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property refMe : a reference to current application
set appFileManager to refMe's NSFileManager's defaultManager()


##########################################
###【1】ドキュメントのパスをNSString
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
set ocidPlistFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Preferences/.GlobalPreferences.plist")
##########################################
### 【2】PLISTを可変レコードとして読み込み
set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithContentsOfURL:(ocidPlistFilePathURL)

##########################################
### 【3】値を取得
set ocidAppleLanguagesArray to (ocidPlistDict's objectForKey:("AppleLanguages"))
log (ocidAppleLanguagesArray's objectAtIndex:(0)) as text
-->(*ja-JP*)


|

新規ユーザー追加(macOS14.3で修正された)


#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
#設定するユーザーID
#学籍や社員番号があれば関連づけるのも有効だけど
#セキュリティ上はユーザーと紐づかない番号が推奨
STR_SET_UID="555"
#ユーザー名ショート
STR_USER_NAME="quick_timer"
#ユーザー名フル
STR_USER_FULLNAME="QuickTimer"
#グループID
STR_GID="20"
#シェル
STR_SHELL_PATH="/bin/zsh"
#パスワード
STR_PASSWORD="1234"
#パスワードヒント
STR_HINT="初期パスワードは書類に記載されています"
#ホームパス
STR_HOME_PATH="/Users/$STR_USER_NAME"
#アイコンパス
STR_PICTURE_PATH="/Library/User Pictures/Sports/Target.heic"

#################################################
###管理者インストールしているか?チェック
#################################################
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"
  ###STAT
STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
/bin/echo "STAT_USR(console): $STAT_USR"
fi
########################################
/bin/echo "ユーザーIDの重複チェック"
########################################
TEXT_RESULT=$(/usr/bin/dscl localhost -list /Local/Default/Users UniqueID)
#リストにして
DEFAULT_IFS=$IFS
IFS=$'\n'
read -d '\n' -r -a LIST_USER <<<"$TEXT_RESULT"
IFS=$DEFAULT_IFS
#総当たりで調べます
for ITEM_LIST in "${LIST_USER[@]}"; do
  #ユーザーが存在するか?
  if [[ $ITEM_LIST == *"$STR_SET_UID"* ]]; then
TEXT_USER_INFO=$ITEM_LIST
  fi
done
#ユーザーが発見された場合
if [ -z "$TEXT_USER_INFO" ]; then
/bin/echo "未設定ですので処理を開始します"
else
/bin/echo "ユーザー:" "$TEXT_USER_INFO"
/bin/echo "$STR_SET_UID""ユーザーがいるので処理を終了します"
exit 1
fi
########################################
/bin/echo "ユーザーアカウント作成"
########################################
/usr/bin/sudo /usr/sbin/sysadminctl -addUser "$STR_USER_NAME" -fullName "$STR_USER_FULLNAME" -UID "$STR_SET_UID" -GID "$STR_GID" -shell "$STR_SHELL_PATH" -home "$STR_HOME_PATH" -picture "$STR_PICTURE_PATH" -password "$STR_PASSWORD" -hint "$STR_HINT" -admin
########################################
/bin/echo "パスワードリセット"
########################################
##ルートで処理する場合(非推奨)
## /usr/bin/printf "ルートパスワード" | /usr/bin/sudo /usr/bin/pwpolicy -a root -u "$STR_USER_NAME" -setpolicy "newPasswordRequired=1"
##初回ログイン時にパスワード設定
##macOS14.3で修正された
/usr/bin/sudo /usr/bin/pwpolicy -u "$STR_USER_NAME" -setpolicy "newPasswordRequired=1"

########################################
/bin/echo "ユーザーフォルダ作成"
########################################
/bin/mkdir -p "$STR_HOME_PATH"
# 規定は700 アパッチ運用ある場合は755
/bin/chmod 755 "$STR_HOME_PATH"
/bin/chmod +a "group:everyone deny delete" "$STR_HOME_PATH"
#ユーザーテンプレートをコピー
/usr/bin/ditto "/Library/User Template/Japanese.lproj/.CFUserTextEncoding" "$STR_HOME_PATH/.CFUserTextEncoding"
########################################
/bin/echo "サブフォルダ作成"
########################################
LIST_SUB_DIR_NAME=("Library" "Desktop" "Documents" "Downloads" "Movies" "Music" "Pictures" "Public" "Groups" "Developer" "Sites" "Applications" "bin")
for ITEM_DIR_NAME in "${LIST_SUB_DIR_NAME[@]}"; do
STR_CHK_PATH="$STR_HOME_PATH/${ITEM_DIR_NAME}"
/bin/mkdir -p "$STR_CHK_PATH"
/bin/chmod 700 "$STR_CHK_PATH"
/bin/chmod +a "group:everyone deny delete" "$STR_CHK_PATH"
  #localized生成
/usr/bin/touch "$STR_CHK_PATH/.localized"
done
########################################
/bin/echo "Library サブフォルダ作成 "
########################################
LIST_SUB_DIR_NAME=("Compositions" "PreferencePanes" "Application Support" "Favorites" "Preferences" "Assistants" "FontCollections" "Printers" "Fonts" "Screen Savers" "Autosave Information" "Input Methods" "Services" "Caches" "Internet Plug-Ins" "Sounds" "ColorPickers" "Keyboard Layouts" "Spelling" "Colors" "Logs" "Group Containers" "Managed Items" "Managed Items/My Applications" "Managed Items/My Network" "Managed Items/Documents" "Audio" "Audio/MIDI Drivers" "Audio/Plug-Ins/Components" "Audio/Plug-Ins/Digidesign" "Audio/Plug-Ins/VST" "Audio/Sounds/Alerts" "Audio/Sounds/Banks")
for ITEM_DIR_NAME in "${LIST_SUB_DIR_NAME[@]}"; do
STR_CHK_PATH="$STR_HOME_PATH/Library/${ITEM_DIR_NAME}"
/bin/mkdir -p "$STR_CHK_PATH"
/bin/chmod 700 "$STR_CHK_PATH"
/bin/chmod +a "group:everyone deny delete" "$STR_CHK_PATH"
done
##可視にする場合
/usr/bin/chflags nohidden "/Users/$CONSOLE_USER/Library"
/usr/bin/SetFile -a v "/Users/$CONSOLE_USER/Library"
#不可視にする場合
# /usr/bin/chflags hidden "/Users/$CONSOLE_USER/Library"
# /usr/bin/SetFile -a V "/Users/$CONSOLE_USER/Library"
# binは不可視にする
/usr/bin/chflags hidden "/Users/$CONSOLE_USER/bin"
/usr/bin/SetFile -a V "/Users/$CONSOLE_USER/bin"
#ユーザーテンプレートをコピー
/usr/bin/ditto "/Library/User Template/Japanese.lproj/Library/FontCollections" "$STR_HOME_PATH/Library/FontCollections"
/usr/bin/ditto "/Library/User Template/Japanese.lproj/Library/Preferences" "$STR_HOME_PATH/Library/Preferences"

########################################
/bin/echo "Public サブフォルダ作成 "
########################################
/bin/chmod 755 "$STR_HOME_PATH/Public"
/bin/mkdir -p "$STR_HOME_PATH/Public/Drop Box"
/bin/chmod 733 "$STR_HOME_PATH/Public/Drop Box"
/bin/chmod +a "group:everyone deny delete" "$STR_HOME_PATH/Public/Drop Box"
/bin/chmod +a "user:$STR_USER_NAME allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" "$STR_HOME_PATH/Public/Drop Box"
/usr/bin/touch "$STR_HOME_PATH/Public/Drop Box/.localized"

########################################
/bin/echo "アクセス権 オーナー指定"
########################################
/usr/sbin/chown -Rf "$STR_USER_NAME" "$STR_HOME_PATH"
/usr/bin/chgrp -Rf staff "$STR_HOME_PATH"
##
########################################
/bin/echo "Sites サブフォルダ作成 "
#Sites以下は削除可能でOK
########################################
# 規定は700 アパッチ運用ある場合は755
/bin/chmod 755 "$STR_HOME_PATH/Sites"
LIST_SUB_DIR_NAME=("images" "css" "js" "Streaming")
for ITEM_DIR_NAME in "${LIST_SUB_DIR_NAME[@]}"; do
STR_CHK_PATH="$STR_HOME_PATH/Sites/${ITEM_DIR_NAME}"
/bin/mkdir -p "$STR_CHK_PATH"
/bin/chmod 755 "$STR_CHK_PATH"
/usr/bin/chgrp -Rf _www "$STR_CHK_PATH"
done
/bin/chmod +a "group:_qtss allow read,write,execute" "$STR_HOME_PATH/Sites/Streaming"

  
exit 0




|

[bash]ユーザーの取得(statを追加)


#!/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 "↑を実行してください"
  ###実行しているユーザー名
  CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
  /bin/echo "コンソールユーザー(scutil): $CONSOLE_USER"
  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"
  ###STAT
  STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
  /bin/echo "STAT_USR(console): $STAT_USR"
fi


|

[BASH]ユーザーの最終ログアウト日時


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

#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
#ユーザードメインにインストール
#!/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
  ###実行しているユーザー名
  CURRENT_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
  /bin/echo "実行ユーザー:" "$CURRENT_USER"
fi
###コンソールユーザー CONSOLE_USERはFinderでログインしていないと出ない
CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
if [ -z "$CONSOLE_USER" ]; then
  /bin/echo "コンソールユーザーが無い=電源入れてログインウィンドウ状態"
else
  /bin/echo "コンソールユーザー:" "$CONSOLE_USER"
fi
########################################
###ローカルのユーザーアカウントを取得
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"

########################################
##デバイスUUIDを取得
STR_DEVICE_UUID=$(/usr/sbin/ioreg -c IOPlatformExpertDevice | grep IOPlatformUUID | awk -F'"' '{print $4}')
  /bin/echo "デバイスUUID: " "$STR_DEVICE_UUID"
  
###各ユーザーの最終ログイン日
for ITEM_LIST in "${LIST_USER[@]}"; do
  STR_LAST_LOGIN=$(/usr/bin/last "${ITEM_LIST}" | /usr/bin/grep console | /usr/bin/head -n 1  | awk -F'console' '{print $2}')
  /bin/echo "${ITEM_LIST} の最終ログイン日: "
  /bin/echo  "$STR_LAST_LOGIN"
done

###各ユーザーの最終ログアウト日
for ITEM_LIST in "${LIST_USER[@]}"; do
  STR_CHECK_File_PATH="/Users/${ITEM_LIST}/Library/Preferences/ByHost/com.apple.loginwindow.$STR_DEVICE_UUID.plist"
  STR_LAST_LOGOUT=$(/usr/bin/sudo -u "${ITEM_LIST}" /usr/bin/stat -f "%Sm" -t "%Y-%m-%d %H:%M:%S" "$STR_CHECK_File_PATH")
  /bin/echo "$ITEM_LIST の最終ログアウト日: " "$STR_LAST_LOGOUT"
done

|

[UID]UIDを取得する方法6種


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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions


##
set recordSystemInfo to (system info) as record
set stUID to (user ID of recordSystemInfo) as text
##
set strCommandText to ("/usr/bin/stat -f \"%u\" /dev/console") as text
set stUID to (do shell script strCommandText) as text
##
set strCommandText to ("/usr/bin/id -u") as text
set stUID to (do shell script strCommandText) as text
##
set strCommandText to ("/bin/echo $UID") as text
set stUID to (do shell script strCommandText) as text
##
set strCommandText to ("/usr/bin/dsmemberutil getid -U $USER | /usr/bin/awk '/:/ { print $2 }'") as text
set stUID to (do shell script strCommandText) as text
##
set strCommandText to ("/usr/bin/dscl localhost -list /Local/Default/Users UniqueID | grep $USER | /usr/bin/awk '/ / { print $2 }'") as text
set stUID to (do shell script strCommandText) as text


|

[NSUserName]現在のユーザー名(ショートユーザー名)


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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use scripting additions

set recordSystemInfo to (system info) as record
set strCurrentUserName to (short user name of recordSystemInfo) as text



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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property refMe : a reference to current application

##プロセスインフォ
set ocidProcessInfo to refMe's NSProcessInfo's processInfo()
##ユーザー情報
set ocidEnvDict to ocidProcessInfo's environment()
set strTMPDIR to (ocidEnvDict's valueForKey:"TMPDIR") as text
set strHOME to (ocidEnvDict's valueForKey:"HOME") as text
set strUSER to (ocidEnvDict's valueForKey:"USER") as text
set strLOGNAME to (ocidEnvDict's valueForKey:"LOGNAME") as text



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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property refMe : a reference to current application
set appFileManager to refMe's NSFileManager's defaultManager()

set ocidUserName to refMe's NSUserName()
set strUserName to ocidUserName as text


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

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions


tell application "System Events"
  set refUser to (current user)
  set strShortUserName to (full name of refUser) as text
  set strShortUserName to (home directory of refUser) as text
  set strShortUserName to (name of refUser) as text
end tell


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

#!/bin/bash
###
STR_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行したユーザーは:" "$STR_WHOAMI"

STR_UID_NAME=$(/usr/bin/id -un)
/bin/echo "実行したユーザーは:" "$STR_UID_NAME"

STR_LOGIN_NAME=$(/usr/bin/logname)
/bin/echo "ログインユーザーは:" "$STR_LOGIN_NAME"

STR_LOGIN_ENV_NAME=$(/bin/echo "$USER")
/bin/echo "ログインユーザーは:" "$STR_LOGIN_ENV_NAME"

STR_LOGIN_ENV_NAME=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
/bin/echo "実行ユーザー:" "$STR_LOGIN_ENV_NAME"

CONSOLE_USER=$(/usr/sbin/scutil <<< "show State:/Users/ConsoleUser" | /usr/bin/awk '/Name :/ { print $3}')
/bin/echo "ログインしているユーザー:" "$CONSOLE_USER"

CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
/bin/echo "ログインしているユーザー:" "$CONSOLE_USER"

STR_UID=$(/usr/bin/id -u)
UID_TO_USERNAME=$(/usr/bin/dscl localhost -list /Local/Default/Users UniqueID | grep "$STR_UID" | /usr/bin/awk '/ / { print $1 }')
/bin/echo "実行しているユーザー:" "$UID_TO_USERNAME"

|

その他のカテゴリー

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 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