사용자를 위한 무작위 패스를 생성하고 파일에 저장해 보세요.

사용자를 위한 무작위 패스를 생성하고 파일에 저장해 보세요.

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)

관련 정보