bash 스크립트의 텍스트 파일에서 생성된 사용자에 대해 임의의 비밀번호를 생성한 다음 해당 비밀번호를 텍스트 파일에 저장하려고 합니다. 이것이 내가 하는 일이다.
잘 작동하고 텍스트 파일에서 사용자를 생성하고 LOL 파일에도 비밀번호를 출력하지만 생성된 사용자의 비밀번호가 작동하지 않습니다.
여기 내 코드가 있습니다. 이에 대한 도움을 주시면 대단히 감사하겠습니다.
while read line || [ -n "$line" ] # protect against no newline for last line
do name=$line
pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1 >> lol)
sudo useradd $name -m
sudo usermod -p $(echo $pass | openssl passwd -1 -stdin) $name
echo "The user - $name - has been created!"
done < "$fname" # double-quote fname echo
답변1
명령 대체의 반환 값은 서브쉘의 stdout입니다.
lol
다음 줄에서는 출력을 하위 셸의 파일 로 리디렉션했습니다 . 따라서 변수에 저장할 반환 값이 없습니다 pass
.
pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1 >> lol)
다음 줄을 다음과 같이 두 부분으로 나눌 수 있습니다.
pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1)
echo "$pass" >> lol
또는 다음을 사용하십시오 tee -a
.
pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1 | tee -a lol)