gpt4 book ai didi

bash - 期待脚本问题

转载 作者:行者123 更新时间:2023-11-29 09:24:27 24 4
gpt4 key购买 nike

我正在尝试通过 expect 完成一项简单的工作。我想在 Linux VM 上使用“ssh-keygen”命令创建 ssh key 。我下面的期望代码看起来很简单,但它不起作用:

#!/usr/bin/expect

spawn ssh-keygen -t rsa
expect -exact "Enter file in which to save the key (/root/.ssh/id_rsa): "
send -- "\r"
expect -exact "Enter passphrase (empty for no passphrase): "
send -- "\r"
expect -exact "Enter same passphrase again: "
send -- "\r"

我不想使用任何密码短语。因此输入 "\r" 进行“Enter”键操作。我尝试使用 "#!/usr/bin/expect -d" 运行此代码,但我发现它与我提到的字符串不匹配。如下所示:

...
expect: does "" (spawn_id exp6) match exact string "Enter file in which to save the key (/root/.ssh/id_rsa): "? no
....

所以我认为因为它无法匹配模式,所以我的脚本失败了。问题是,为什么它无法匹配模式。我正在使用 "-exact" 但它仍然无法匹配模式。我尝试使用 "-re",但我认为我不擅长 TCL 正则表达式。

你能帮忙吗?谢谢。

最佳答案

生成的程序可能发送的输出比您尝试匹配的输出更多。正是。这就是正则表达式匹配如此有用的原因。

试试这个:

spawn ssh-keygen -t rsa
expect -re {Enter file in which to save the key (/root/.ssh/id_rsa): $}
send -- "\r"
expect -re {Enter passphrase (empty for no passphrase): $}
send -- "\r"
expect -re {Enter same passphrase again: $}
send -- "\r"

关于bash - 期待脚本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7729948/

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