你如何强制苹果脚本 + aws 保险库等待 mfa 访问 使用delay使用display dialog

如何解决你如何强制苹果脚本 + aws 保险库等待 mfa 访问 使用delay使用display dialog

我有一个这样的苹果脚本

#!/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 计算机。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?