2016-07-28 9 views
0

안녕하세요, 제 서버에서 사용자 설정을 자동화하고 싶습니다. 그래서 나는이 간단한 bash로 시작했다.bash 스크립트의 명령어에있는 변수

#! /bin/bash 

if [ $# -ne 2 ] 
then 
echo "Usage: $(basename $0) USERNAME PASSWORD" 
exit 1 
fi 
user_name=$1 
password_var=$2 

exec useradd -m $user_name 
usermod -s /bin/bash 
#echo "$2" | exec chpasswd $user_name --stdin 
usermod -aG www-data "${user_name}" 

나는 마지막 줄에 문제가있다. 방금 생성 한 사용자는 그룹 www-data에 할당되지 않습니다. 내가 마지막 행만 사용하고 그 밖의 모든 것을 주석으로 달고 내 사용자를 스크립트에 넣으면 나 자신을 추가 할 수 있습니다. 왜 누군가가이 문제를 설명 할 수 있습니까?

+3

'exec' 결코 반환 될 – Mat

답변

1
exec useradd -m $user_name 

는 현재 프로세스가 useradd -m $user_name 여기 bash를 즉 대체합니다.
또한 여기에 exec을 사용하면 실용적인 이점이 없습니다. 리눅스 암호가 공백을 가질 수있다, 나는 몇 가지 오류 검사와

password_var="$2" #prevents word splitting 

을하는 것이 좋습니다 또한

, 내 마지막 스크립트는

password_var="$2" 
useradd -mp "$password_var" "$user_name" # You haven't used password 
if [ $? -ne 0 ] # checking the exit status of the last command 
then 
    echo "User creation failed" 
    exit 1 
else 
usermod -s /bin/bash "$user_name" #username missing in the original code 
usermod -aG www-data "$user_name" 
fi 
+0

예 그것은 그 것이었다 , 또한 정리를위한 감사합니다;) – theDrifter