![사용자가 표시된 난수 문자열을 다시 입력하도록 요구하는 로그인 스크립트](https://linux55.com/image/146044/%EC%82%AC%EC%9A%A9%EC%9E%90%EA%B0%80%20%ED%91%9C%EC%8B%9C%EB%90%9C%20%EB%82%9C%EC%88%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EB%8B%A4%EC%8B%9C%20%EC%9E%85%EB%A0%A5%ED%95%98%EB%8F%84%EB%A1%9D%20%EC%9A%94%EA%B5%AC%ED%95%98%EB%8A%94%20%EB%A1%9C%EA%B7%B8%EC%9D%B8%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8.png)
현재 사용자가 Linux 서버에 로그인하고 마지막으로 인쇄할 때 실행되는 스크립트가 있습니다.
[Terms of use agreement prints here]
read -p "Agree and continue..." -nl -s
그러나 대부분의 사용자는 스크립트가 특정 항목을 찾지 않기 때문에 프롬프트(스페이스바, Enter, 임의의 키 등)를 통해 "입력"하고 있으며 이제 사용자는 입력할 스크립트나 매크로를 직접 작성했습니다. 과거에 .
해결책으로 스크립트에서 임의의 숫자 문자열을 인쇄한 다음 액세스를 허용하기 전에 사용자가 프롬프트에 해당 숫자를 다시 입력하도록 요구하고 싶습니다.
예:
"서버에 오신 것을 환영합니다! 계속하려면 다음 일회용 비밀번호를 입력하세요: 1234.
열쇠: "
어떻게 해야 하나요?
답변1
사용하는 것이 필요하다읽기 -p? 그렇지 않으면 다음을 수행할 수 있습니다(이것은 개념 증명 스크립트가 됩니다).
#!/bin/bash
RANDOMNUM=$(shuf -i 0000-9999 -n 1)
echo "Introduce password $RANDOMNUM"
read value
if [ $value == $RANDOMNUM ];
then
echo "Password Match!"
else
exit
fi
셔프0000~9999 사이의 4자리 난수가 생성됩니다.