我试图完成一项简单的工作通过期待。我想在Linux VM上使用“ssh-keygen”命令创建ssh密钥。我下面预计的代码看起来很直接,但它不工作:Expect脚本问题
#!/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"
我不想使用任何密码短语。因此为“Enter”键操作键入"\r"
。 我试着用"#!/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正则表达式。
你能帮忙吗? 谢谢。
谢谢格伦,你正确的正则表达式的一部分。它用于匹配模式,但expect命令的调试显示模式不匹配。只要我的脚本正常工作,我不在乎调试。谢谢。 –