Как мне запросить пароль в awk? - PullRequest
1 голос
/ 09 января 2020

Я пытаюсь запросить пароль, если пароль передан в качестве аргумента командной строки в (g) awk. Причина этого, конечно, заключается в том, что вы не хотите, чтобы пароль записывался открытым текстом в журналах.

Я работаю со скриптом awk, поэтому я сделаю это из awk и сохраню пароль в переменной awk. Я знаю, что можно использовать функцию «read» из bash, но это также создает отдельный подпроцесс, что делает вещи очень громоздкими для работы.

Любой, кто знает, существует ли встроенная поддержка для этого, существует в awk?

BR Patrik

Ответы [ 2 ]

2 голосов
/ 09 января 2020

Использование stty для отключения вывода терминала при вводе пароля:

function getpass() {
    printf "password:";
    "stty -echo" | getline;
    getline pwd < "/dev/stdin";
    printf "\n";
    "stty echo" | getline;
    return pwd;
}

BEGIN {
    if(!pwd) {
        pwd = getpass();
    }   
}

...
0 голосов
/ 09 января 2020

У нас всегда будет /dev/stdin:

awk '
BEGIN {
    password="foo"
    printf "Enter password: "
    while((getline line < "/dev/stdin") > 0 && line!=password) {
        printf "Wrong password.\n\nEnter password: "
    }
    if(line==password)                                            # in case of ^D
        print "Correct password was " line
    else                                                          # handles ^D
        exit
}'

Пример сеанса входа в систему:

Enter password: asd
Wrong password.

Enter password: foo
Correct password was foo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...