Запросить пароль в POSIX-совместимой оболочке?

Когда я хочу запросить пароль в сценарии bash , я делаю это:

 read -s 

… но когда я запускаю bash в режиме POSIX, с sh , опция не существует:

 $ read -s sh: 1: read: Illegal option -s 

Как я могу запросить ввод с помощью команды POSIX?

2 Solutions collect form web for “Запросить пароль в POSIX-совместимой оболочке?”

read -s не находится в POSIX. Если вы хотите быть совместимым с POSIX, используйте stty -echo . stty и его echo параметр определены в POSIX.

 #!/bin/bash stty -echo printf "Password: " read PASSWORD stty echo printf "\n" 

Это будет работать на всех оболочках, соответствующих POSIX.

Источник

 read_password() { REPLY="$( # always read from the tty even when redirected: exec < /dev/tty || exit # || exit only needed for bash # save current tty settings: tty_settings=$(stty -g) || exit # schedule restore of the settings on exit of that subshell # or on receiving SIGINT or SIGTERM: trap 'stty "$tty_settings"' EXIT INT TERM # disable terminal local echo stty -echo || exit # prompt on tty printf "Password: " > /dev/tty # read password as one line, record exit status IFS= read -r password; ret=$? # display a newline to visually acknowledge the entered password echo > /dev/tty # return the password for $REPLY printf '%s\n' "$password" exit "$ret" )" } 

Обратите внимание, что для этих оболочек (mksh), где printf не встроен, пароль будет отображаться в выводе ps (на несколько микросекунд) или может отображаться в некоторых журналах аудита, если проверяются все вызовы команд с их параметрами.

  • Комбинированные переменные с переменными входами в одну строку
  • Как следить за действиями одного конкретного файла
  • Rsync ведет себя по-другому, если вызывается внутри скрипта
  • Почему моя петля не продолжается должным образом в моей игре с ножницами из каменной бумаги?
  • Найти весь интерфейс Ethernet и связать IP-адрес
  • Быстро проверьте, работают ли многие сетевые хосты
  • shell-скрипты с большим количеством файлов - timelapse
  • Bash для чтения двух конкретных строк из текстового файла и использования частей из них в качестве переменной
  • Что не так с моими заявлениями elif в этой игре с ножницами из каменной бумаги, которую я делаю
  • «ПИНГ» AP, чтобы узнать, жив ли он? (Прежде чем связываться с ним)
  • Использование sed для замены строки со многими специальными символами?
  • Linux и Unix - лучшая ОС в мире.