2015-11-02 76 views
-1

我想製作一個腳本,它檢查OS X版本並根據sysadminctl或dscl被調用。如您所見,該腳本正在檢查操作系統版本並檢查下一個可用的用戶ID。之後,腳本跳轉到最後,並出現意外文件結尾的錯誤。 這裏缺少什麼?Mac OS X爲10.9創建用戶腳本至10.11

感謝您的幫助!

#!/bin/sh 

# create_user_1.2.sh 
# 
# 
# 

if [ "$(id -u)" != "0" ]; then 
echo "Sorry, you are not root." 
exit 1 
fi 


# === For creating a User we need some input! === 

echo "Enter your desired user name: " 
read USERNAME 

echo "Enter a full name for this user: " 
read FULLNAME 

echo "Enter a password for this user: " 
read -s PASSWORD 

# ==== 


# A list of (secondary) groups the user should belong to 
# This makes the difference between admin and non-admin users. 

echo "Is this an administrative user? (y/n)" 
read GROUP_ADD 

if [ "$GROUP_ADD" = n ] ; then 
    SECONDARY_GROUPS="staff" # for a non-admin user 
elif [ "$GROUP_ADD" = y ] ; then 
    SECONDARY_GROUPS="admin _lpadmin _appserveradm _appserverusr" # for an admin user 
else 
    echo "You did not make a valid selection!" 
fi 

# ==== 

# check the OS X Version 
OSXVERSION=$(sw_vers -productVersion | awk -F '.' '{print $1 "." $2}') 

# Create a UID that is not currently in use 
echo "Creating an unused UID for new user..." 

# Find out the next available user ID 
MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1) 
USERID=$((MAXID+1)) 

#if osx 10.10 then run 
if [[ "$OSXVERSION" == "10.11" ]]; then 
sysadminctl -addUser $USERNAME -fullName "$FULLNAME" -UID=$USERID -password $PASSWORD 

else 


#if osx 10.10 then run 
if [[ "$OSXVERSION" == "10.10" ]]; then 
sysadminctl -addUser $USERNAME -fullName "$FULLNAME" -UID=$USERID -password $PASSWORD 

else 

#if osx 10.9 then run 
if [[ "$OSXVERSION" == "10.9" ]]; then 

# Create the user account by running dscl (normally you would have to do each of these commands one 
# by one in an obnoxious and time consuming way. 
echo "Creating necessary files..." 

dscl . -create /Users/$USERNAME 
dscl . -create /Users/$USERNAME UserShell /bin/bash 
dscl . -create /Users/$USERNAME RealName "$FULLNAME" 
dscl . -create /Users/$USERNAME UniqueID "$USERID" 
dscl . -create /Users/$USERNAME PrimaryGroupID 20 
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME 
dscl . -passwd /Users/$USERNAME $PASSWORD 

# Create the home directory 
echo "Creating home directory..." 
createhomedir -c 2>&1 | grep -v "shell-init" 

fi 

# Add user to any specified groups 
echo "Adding user to specified groups..." 

for GROUP in $SECONDARY_GROUPS ; do 
dseditgroup -o edit -t user -a $USERNAME $GROUP 
done 

echo "Created user #$USERID: $USERNAME ($FULLNAME)" 

exit 0 

回答

0

答案很簡單:「如果「其他」需要在正確的順序與「ELSIF」:

#if osx 10.10 then run 
if [[ "$OSXVERSION" == "10.11" ]]; then 
    echo "OS is 10.11" 
sysadminctl -addUser $USERNAME -fullName "$FULLNAME" -UID=$USERID -password $PASSWORD 

#if osx 10.10 then run 

elif [[ "$OSXVERSION" == "10.10" ]]; then 
    echo "OS is 10.10" 
sysadminctl -addUser $USERNAME -fullName "$FULLNAME" -UID=$USERID -password $PASSWORD 

#if osx 10.9 then run 

elif [[ "$OSXVERSION" == "10.9" ]]; then 

# Create the user account by running dscl 
echo "Creating necessary files..." 

dscl . -create /Users/$USERNAME 
dscl . -create /Users/$USERNAME UserShell /bin/bash 
dscl . -create /Users/$USERNAME RealName "$FULLNAME" 
dscl . -create /Users/$USERNAME UniqueID "$USERID" 
dscl . -create /Users/$USERNAME PrimaryGroupID 20 
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME 
dscl . -passwd /Users/$USERNAME $PASSWORD 

# Create the home directory 
echo "Creating home directory..." 
createhomedir -c 2>&1 | grep -v "shell-init" 

fi 
0

如果你在這裏,你的系統運行從什麼10.10和更新的,sysadminctl命令是你最好的朋友。 DSCL不能做很多魔術。

下面是sysadminctl輸出:

sysadminctl[21233:29122637] Usage: sysadminctl 
    -deleteUser <user name> [-secure || -keepHome] 
    -newPassword <new password> -oldPassword <old password> [-passwordHint <password hint>] 
    -resetPasswordFor <local user name> -newPassword <new password> [-passwordHint <password hint>] 
    -addUser <user name> [-fullName <full name>] [-UID <user ID>] [-password <user password>] [-hint <user hint>] [-home <full path to home>] [-admin] [-picture <full path to user image>] 

Pass '-' instead of password in commands above to request prompt. 

然後,你想做的事:

sudo createhomedir -c 2>&1 | grep -v "shell-init" 

要添加/刪除用戶使用dseditgroup:

sudo dseditgroup -o edit -a usernametoadd -t user admin 
sudo dseditgroup -o edit -a usernametoadd -t user wheel