请问expect怎样判断是否跳过下一句啊?

sh/bash/dash/ksh/zsh等Shell脚本
回复
香肠超人
帖子: 10
注册时间: 2010-07-30 16:56
送出感谢: 0
接收感谢: 0

请问expect怎样判断是否跳过下一句啊?

#1

帖子 香肠超人 » 2011-03-18 16:35

#!/usr/bin/expect
spawn ssh-keygen -t rsa
expect ".ssh/id_rsa):"
send "\r"
expect "Overwrite (y/n)?"
send "y\r"

expect "for no passphrase):"
send "\r";
expect "same passphrase again:"
send "\r"
interact

上面是一个非常简单的expect程序,就是配置SSH密钥的。红色部分第一次运行不需要,但是以后都会询问是否覆盖。
就是说这个生成密钥,首次生成要按3下按键,以后再次生成总共要按4下。
我本来想用while true{"第三句"break;"第二句"continue}这样来做的,可是楞是找不到手册,不知道这个语法怎么写……
请问怎样可以自动判断呢?我GOOGLE了很久,有一说是expect后加入{}相当于switch?但是试过下不行。有情达人指教。
香肠超人
帖子: 10
注册时间: 2010-07-30 16:56
送出感谢: 0
接收感谢: 0

Re: 请问expect怎样判断是否跳过下一句啊?

#2

帖子 香肠超人 » 2011-03-18 16:46

已解决了,原来是
expect {
"Overwrite (y/n)?"
{send "y\r";exp_continue}
"for no passphrase):"
{send "\r"}
}
…………
chengmoYS
帖子: 125
注册时间: 2007-10-22 22:40
送出感谢: 0
接收感谢: 0
联系:

Re: 请问expect怎样判断是否跳过下一句啊?

#3

帖子 chengmoYS » 2011-03-25 9:51

是exp_continue命令吗?
chengmoYS
帖子: 125
注册时间: 2007-10-22 22:40
送出感谢: 0
接收感谢: 0
联系:

Re: 请问expect怎样判断是否跳过下一句啊?

#4

帖子 chengmoYS » 2011-03-25 13:29

另外我想问下,如果使用ssh登录局域网内其他主机。第一次登录时,会有提示要求输入yes/no,以后登录时,就不用了。这个用什么解决啊。我也对expect不熟。
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 请问expect怎样判断是否跳过下一句啊?

#5

帖子 lilydjwg » 2011-03-25 21:54

chengmoYS 写了:另外我想问下,如果使用ssh登录局域网内其他主机。第一次登录时,会有提示要求输入yes/no,以后登录时,就不用了。这个用什么解决啊。我也对expect不熟。

代码: 全选

ssh -o StrictHostKeyChecking=no xxx
回复

回到 “Shell脚本”