Skip to content

Instantly share code, notes, and snippets.

@i97506051502
Last active December 11, 2015 11:18
Show Gist options
  • Save i97506051502/4592765 to your computer and use it in GitHub Desktop.
Save i97506051502/4592765 to your computer and use it in GitHub Desktop.
Mac OS X (Server) 上でユーザーを作成するスクリプトです。 「Users.list」という決められたフォーマットのテキストファイルを準備し、そこにユーザー情報を書き込み、実行します。 dscl のヘルプを読んだりして attribute を増やせば機能拡張が可能なはずです。
#!/bin/bash
########################################################################
#
# Script Name:
# makeUsersOnMacOSX.sh
#
# Project:
# Miscellaneous
#
# Execute User: belongs to Administrators Group or root.
#
# crontab
# No Entry
#
# Description:
# make user(s) on Mac OS X (Server)
# prepare 'Users.list' file including users' information like below,
# 姓1 名1 氏名1 username1 10001 Group1 10001 Group2 10002 password1 ...
# 姓2 名2 氏名2 username2 10002 Group1 10001 Group2 10002 password2 ...
# 姓3 名3 氏名3 username3 10003 Group1 10001 Group2 10002 password3 ...
#
# Usage:
# ./makeUsersOnMacOSX.sh Users.list
#
# Advaned Usage:
# none
#
# Last Update: 2013/01/22
#
# Authored by Go Sato (ZOOM DESIGN)
#
########################################################################
# Check if file exists
# ----------------------------------------------------------------------
if [ -f ./Users.list ] ;
then
# exception handling
# ----------------------------------------------------------------------
set -e
trap 'echo "Some error happens. Check Script File and Run Command."' ERR
while read line
do
user=($line)
# Sample
# ----------------------------------------------------------------------
# echo ${user[0]}
# echo ${user[1]}
# echo ${user[2]}
# All Users
# echo ${user[*]}
# echo ${user[@]}
# Make User(s)
# ----------------------------------------------------------------------
# Check if User Exists
# ----------------------------------------------------------------------
sudo dscl . -read /Users/${user[3]} > /dev/null 2>&1 && { echo 'User '${user[3]}' already exists.'; continue; }
sudo dscl . -create /Users/${user[3]}
sudo dscl . -create /Users/${user[3]} RealName ${user[2]}
sudo dscl . -create /Users/${user[3]} UniqueID ${user[4]}
sudo dscl . -create /Users/${user[3]} PrimaryGroupID ${user[6]}
sudo dscl . -create /Users/${user[3]} SecondaryGroupID ${user[8]}
# ホームディレクトリを個別に設定する場合は以下を変更
sudo dscl . -create /Users/${user[3]} NFSHomeDirectory /Users/${user[3]}
# ログインシェルを個別に変更する場合は以下を変更
sudo dscl . -create /Users/${user[3]} UserShell /bin/bash
# Set Password for User
sudo dscl . passwd /Users/${user[3]} ${user[9]}
# Add User(s) to Group(s)
# ----------------------------------------------------------------------
# Add User to Primary Group
sudo dscl . -append /Groups/${user[5]} users ${user[3]}
# Add User to Secondary Group
sudo dscl . -append /Groups/${user[7]} users ${user[3]}
# Check Users' Information
# ----------------------------------------------------------------------
# sudo dscl . -read /Groups/Tokyo
# sudo dscl . -read /Groups/Osaka
# sudo dscl . -read /Users/taroyamada
done < Users.list
exit 0
else
echo 'This Script needs file "Users.list" like below,'
echo '姓1 名1 氏名1 username1 10001 Group1 10001 Group2 10002 password1 ...'
echo '姓2 名2 氏名2 username2 10002 Group1 10001 Group2 10002 password2 ...'
echo '姓3 名3 氏名3 username3 10003 Group1 10001 Group2 10002 password3 ...'
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment