Inmatning av lösenord och hemligheter i POSIX skalskript
#!/bin/bash i all ära, men vad om #!/bin/sh - den minsta gemensamma nämnaren för POSIX-compliance?
Detta inlägg visar hur ett skript tar emot hemlig inmatning och sparar i en variabel (t ex lösenord, tokens) med maximal portabilitet.
Skriptkod
Nedan visar exempel på att mata in text genom att skriva eller klistra in. Vid tryck på Enter sparas den inmatade texten i i variabeln wisdom.
Exempel 1 - Instruktion och inmatning på en ny rad:
echo "Ange lösenord: "
stty -echo
read -r pw
stty echo
Exempel 2 - Instruktion och inmatning på samma rad:
printf "Ange lösenord: "
stty -echo
read -r pw
stty echo
Exempel 3 - Visa bara instruktion och inmatning om variabeln pw inte är satt:
if [ -z "${pw}" ]; then
printf "Ange lösenord: "
stty -echo
read -r pw
stty echo
fi
Verifiera: är detta POSIX-kompatibelt?
Detta kontrolleras enklast med programmet shellcheck.
shellcheck -s sh posix-secret-user-input.sh
Detta är ett inlägg i en serie om att skripta Unixliknande system med maximal portabilitet. Förgående inlägg i serien: Inmatning av data i POSIX skalskript.