Beliebt

├ťberwachen Sie das Terminal auf eine bestimmte Eingabeaufforderung und geben Sie automatisch die Antwort ein - Befehlszeile, zsh, Eingabeaufforderung

Ich verwende ZSH und frage mich, ob es eine M├Âglichkeit gibt, die stdout f├╝r eine bestimmte Eingabeaufforderung zu ├╝berwachen und die Antwort dann automatisch einzugeben.

Insbesondere m├Âchte ich das MFA-Token automatisch f├╝llen, wenn Sie dazu aufgefordert werden (siehe unten).

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

Ich kann das Token mithilfe von generieren http://soundly.me/oathplus/ aber ich m├Âchte, dass dies nahtlos funktioniert, damit ich das Token nicht manuell eingeben muss.

Bedarf:

Ich m├Âchte das Skript einbinden (m├ÂglicherweiseVerwenden von expect) in der ~ / .zshrc-Datei. Diese wird beim Starten der Shell / des Terminals einmalig geladen und wartet dann auf die Eingabeaufforderung "Geben Sie den MFA-Code f├╝r arn: aws: iam :: 111111111111: mfa / jdoe:". Ich werde dann das Terminal auf normale Weise verwenden und m├Âglicherweise irgendwann einen Befehl verwenden, der die MFA-Token-Eingabeaufforderung ausl├Âst.

Beachten Sie, dass die MFA-Token-Eingabeaufforderung nicht immer angezeigt wirdBei der Ausf├╝hrung des gleichen Befehls kommt es darauf an, ob die vorherige Verbindung noch g├╝ltig ist. Au├čerdem kann es Tage geben, an denen ich die Befehle, die die MFA-Token-Eingabeaufforderung ausl├Âsen, nicht verwende, aber dieses Skript weiterhin im Hintergrund ausgef├╝hrt wird, sobald tats├Ąchlich eine Token-Eingabeaufforderung vorliegt. Da das Token selbst nur g├╝ltig w├Ąre f├╝r eine Minute muss es generiert werden, nachdem die Eingabeaufforderung aufgetaucht ist.

Antworten:

1 f├╝r Antwort Ôäľ 1

Die Erwartung w├Ąre ungef├Ąhr so:

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_promptr"}
}
"

Das versetzt Sie in zsh und Sie interagieren damit wie mit einer normalen interaktiven Shell.

Das -o ├╝berwacht diese Eingabeaufforderung von der Shell - Ausgabe und sendet das Token automatisch.

Expect hat heutzutage einen ziemlich engen Anwendungsfall, aber dieser befindet sich im Steuerhaus.