gpt4 book ai didi

linux - 在 Bash 中使用 'expect' 以任何顺序响应

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:44:16 25 4
gpt4 key购买 nike

我正在使用这个 expect 文件 (keygen.exp) 生成 SSH key ,我正在使用 ssh-keygen 作为示例来测试“expect”:

#!/usr/bin/expect
spawn ssh-keygen

expect "Enter file"
send "./id_rsa\r"

expect "Enter passphrase"
send "\r"

expect "Enter same passphrase"
send "\r"

interact

它工作得很好,但是,如果每次运行时输入提示的顺序不一样,并且在不同的运行中可能有不同的问题怎么办

我想要这样的东西:

#!/usr/bin/expect
spawn ssh-keygen

expect if-is "Enter file"
send "./id_rsa\r"

expect if-is "Enter passphrase"
send "\r"

expect if-is "Enter same passphrase"
send "\r"

interact

这可能吗?

最佳答案

你可以有一个循环的期望语句,以不同的方式处理不同的输出,比如:

expect {
"Enter file" {
send "./id_rsa\r"
exp_continue
}
"Enter passphrase" {
send "\r"
exp_continue
}
"Enter same passphrase" {
send "\r"
exp_continue
}
$
}

但请注意,您需要一些方法来跳出循环。这里的最后一个模式 - $ 没有 exp_continue(或任何其他操作)所以它会跳出循环 if 当你得到提示时登录包括 $。请参阅 https://www.tcl.tk/man/expect5.31/expect.1.html 处的完整文档

关于linux - 在 Bash 中使用 'expect' 以任何顺序响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51652038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com