2016-12-16 3 views
-1

대화 형 배쉬 스크립트를 사용하여 먼저 사용자 이름을 묻고 암호를 묻고 암호를 다시 확인합니다. (이것은 우분투가 아닌 ERP 시스템에서 사용자를 생성합니다.)대화 형 배시 스크립트

저는 1000 명 이상의 사용자와 무작위로 생성 된 암호로 구성된 CSV를 가지고 있으므로 이러한 사용자를 모두 만들어야합니다. CSV에서 사용자를 선택하는 스크립트를 작성한 다음 암호를 묻는 메시지가 표시되면 CSV에서 암호를 전달하여 사용자를 작성합니다. 다음은 내가 한 일이지만 의도대로 작동하지 않습니다.

while IFS=, 
read -a csv_line; do 
createusr ${csv_line[0]}:${csv_line[1]}:${csv_line[1]};done < Desktop/Passwoerter.csv 

암호가 일치하지 않는다는 오류가 발생합니다! 같은 개별 사용자 작업에 대한 실제 스크립트

~$ createuser xyz <press Enter> 
password for xyz: whatever <press enter> 
confirm password for xyz whatever <enter again> 
~$ 

그것의하지가 :

~$ createuser xyz whatever whatever <press enter> 
~$ 

그것은 내가 하나 하나를 추가 할 경우 잘 작동하지만, 거기에 1000 그래서 나는 위의 작은 스크립트를 사용하여 시도하고 있었다 CSV.

답변

1

첫 번째 옵션 : 사용 newusers : 해당 부분은 passwd입니다.

DESCRIPTION 
    The newusers command reads a file (or the standard input by default) 
    and uses this information to update a set of existing users or to 
    create new users. Each line is in the same format as the standard 
    password file. 

입력 파일 포맷 : 당신이 볼 수 있듯이

username:passwd:UID:GID:full name,room number,work phone,home phone,other:directory:shell 

password 파일에 제공됩니다.

불리한 점, 제공된 형식으로 csv를 txt로 변환해야합니다.

newusers < file.txt 

두 번째 옵션 : 당신은 -p 스위치 useradd를 사용할 수 있습니다. 존재하지 않는 경우

useradd -m -p $(mkpasswd "password") username 

-m

는 사용자의 홈 디렉토리를 만듭니다.

-p crypt (3)에 의해 반환 된 암호화 된 암호입니다.

+0

아니, 나는이는 ERP의 일부로서 이러한 사용자를 생성하는 스크립트가 DB에서 다양한 테이블을 치고 이미 존재하는 스크립트를 생성하여 DB에 여러 테이블에 필요한 정보를 저장하므로 사용자 생성시에만이 스크립트를 사용해야합니다. – User2403

+0

이것은 동일한 사용자를 생성합니다. 단지 'csv'를 제공된 형식으로 변환하거나 두 번째 옵션을 사용하고'variables'에 값을 제공하면됩니다. –

+0

우분투가 아닌 ERP 용 사용자를 생성해야하므로 첫 번째 스크립트는 한 번에 하나씩 수행합니다. – User2403

0

나는 내가 내 스크립트가 보이는 필요한 것을 찾아 같은 :

while IFS=# read -a csv_line 
do 
    printf "%s\n%s\n" ${csv_line[1]} ${csv_line[1]} | createuser ${csv_line[0]} 
done 

과 같이 실행 :

./insertalluser < Desktop/Passwoerter.csv