bash-скрипт и ввод пароля

Автор vladimirse, 03 июня 2013, 17:59:21

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

vladimirse

Доброго времени суток! Подскажите пожалуйста как в bash-скриптах можно реализовать ввод пароля со звездочками, что бы каждый введенный символ отображался звездочкой (*)?
Или предложите свой вариант реализации данной задачи.

ZEN

#1
Вот такой вариант:

#!/bin/bash
PASSWORD=""
while
read -s -n1 BUFF
[[ -n $BUFF ]]
do
    PASSWORD=$PASSWORD$BUFF
    echo -en "*"
done
echo
echo $PASSWORD
exit 0


подойдет?
Crimea is Ukraine

vladimirse

Да это, то что нужно спасибо! Но как обработать корректно бэкспейс?
Может закидывать вводимые символы в массив, а при отлове кода бекспейса удалять последний элемент

ZEN

#3
я на эту тему вчера думал ) Средствами bash можно удалять/заменять буквы в слове. Можно обойтись без массива. Вот только содержимое $BUFF нужно преобразовать в ascii-код и сравнивать с ascii-кодом клавиши backspace... В результате строку присваивания можно будет заменить на условие if, если был нажат backspace - удалить символ последний, иначе дописать в $PASSWORD. Будет сегодня время, попробую на практике идею применить

Сообщение объединено: 04 июня 2013, 14:00:09

Попробуй вот такой вариант

#!/bin/bash

PASSWORD=""

while
read -s -n1 BUFF
[[ -n $BUFF ]]
do
    # 127 - backspace ascii code
    if [[ `printf "%d\n" \'$BUFF` == 127 ]]
    then
PASSWORD="${PASSWORD%?}"
echo -en "\b \b"
    else
PASSWORD=$PASSWORD$BUFF
echo -en "*"
    fi
done

echo
echo $PASSWORD

exit 0
Crimea is Ukraine

vladimirse

Да, именно то что нужно! Спасибо большое!!!

ZEN

не за что )

"Не рекламы ради..."
Если интересно, по написанию скриптов на bash я периодически пишу вот тут - linuxhub.ru. Может быть заинтересуют какие-то наработки : )
[свернуть]
Crimea is Ukraine

vladimirse

Приму к сведению! Спасибо!