Я использую ZSH, и мне интересно, есть ли способ наблюдать стандартный вывод для определенного приглашения, а затем автоматически вводить ответ?

В частности, я хотел бы автоматически заполнять токен MFA при появлении запроса, как показано ниже;

Enter MFA code for arn:aws:iam::111111111111:mfa/jdoe:

Я могу сгенерировать токен с помощью инструмента http://soundly.me/oathplus/ , но хочу, чтобы он работал бесперебойно, поэтому мне не нужно вручную вводить токен.

1 ответ1

1

Ожидание будет примерно таким:

expect -c '
    set mfa_token "your token here"
    set mfa_prompt "Enter MFA code for arn:aws:iam::111111111111:mfa/jdoe:"
    spawn zsh
    interact {
        -o $prompt {send_user $prompt; send "$mfa_prompt\r"}
    }
'

Это приводит вас к zsh, и вы взаимодействуете с ним, как обычная интерактивная оболочка.

-o отслеживает это приглашение, поступающее с выхода оболочки, и автоматически отправляет токен.

В наши дни у Expect довольно узкий сценарий использования, но это рулевая рубка.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .