你如何强制 apple script + aws vault 等待 mfa 访问
how do you force apple script + aws vault to wait for mfa access
我有一个这样的苹果脚本
#!/bin/zsh
tell application "iTerm"
activate
select first window
# Create new tab
tell current window
create tab with default profile
end tell
# Split pane
tell current session of current window
split vertically with default profile
split vertically with default profile
split vertically with default profile
end tell
# Exec commands
tell first session of current tab of current window
write text "aws-vault exec my-role -d 12h --no-session"
write text "start him"
end tell
tell second session of current tab of current window
write text "start her"
end tell
tell third session of current tab of current window
write text "start you"
end tell
tell fourth session of current tab of current window
write text "start me"
end tell
end tell
问题是脚本没有等待我从 aws 命令填写 mfa 信息。我也试过 aws-command; start him
但它只是退出并且根本不执行 start him
。有人 运行 以前参与过这个吗?
我认为这不太可能,因为 Apple Script 无法知道 aws
命令需要 mfa 信息以及您是否完成了该信息的输入。
但是有 2 种非常 hacky 的方法可以实现此目的:
使用delay
这个选项可能非常不可靠,但它可以完成这项工作。
您可以使用 delay
命令让 AppleScript 等待 X 秒直到它运行 write text "start him"
。假设您输入 mfa 信息大约需要 10 秒,那么您将使用 delay 10
。下面是代码的样子。
# more code above...
tell first session of current tab of current window
write text "aws-vault exec my-role -d 12h --no-session"
delay 10 # <-- change this value to your liking
write text "start him"
end tell
# more code below...
使用display dialog
我个人认为这可能是您最可靠的选择。您可以做的是打开一个对话框,输入 mfa 信息后,单击“确定”以便脚本继续运行。所以你会有这样的东西:
# more code above...
tell first session of current tab of current window
write text "aws-vault exec my-role -d 12h --no-session"
display dialog "Click Ok once you are done "
write text "start him"
end tell
# more code below...
只是一个小警告:我没有测试上面的代码,因为我没有 macOS 计算机。
我有一个这样的苹果脚本
#!/bin/zsh
tell application "iTerm"
activate
select first window
# Create new tab
tell current window
create tab with default profile
end tell
# Split pane
tell current session of current window
split vertically with default profile
split vertically with default profile
split vertically with default profile
end tell
# Exec commands
tell first session of current tab of current window
write text "aws-vault exec my-role -d 12h --no-session"
write text "start him"
end tell
tell second session of current tab of current window
write text "start her"
end tell
tell third session of current tab of current window
write text "start you"
end tell
tell fourth session of current tab of current window
write text "start me"
end tell
end tell
问题是脚本没有等待我从 aws 命令填写 mfa 信息。我也试过 aws-command; start him
但它只是退出并且根本不执行 start him
。有人 运行 以前参与过这个吗?
我认为这不太可能,因为 Apple Script 无法知道 aws
命令需要 mfa 信息以及您是否完成了该信息的输入。
但是有 2 种非常 hacky 的方法可以实现此目的:
使用delay
这个选项可能非常不可靠,但它可以完成这项工作。
您可以使用 delay
命令让 AppleScript 等待 X 秒直到它运行 write text "start him"
。假设您输入 mfa 信息大约需要 10 秒,那么您将使用 delay 10
。下面是代码的样子。
# more code above...
tell first session of current tab of current window
write text "aws-vault exec my-role -d 12h --no-session"
delay 10 # <-- change this value to your liking
write text "start him"
end tell
# more code below...
使用display dialog
我个人认为这可能是您最可靠的选择。您可以做的是打开一个对话框,输入 mfa 信息后,单击“确定”以便脚本继续运行。所以你会有这样的东西:
# more code above...
tell first session of current tab of current window
write text "aws-vault exec my-role -d 12h --no-session"
display dialog "Click Ok once you are done "
write text "start him"
end tell
# more code below...
只是一个小警告:我没有测试上面的代码,因为我没有 macOS 计算机。