#!/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?但是试过下不行。有情达人指教。
请问expect怎样判断是否跳过下一句啊?
-
- 帖子: 10
- 注册时间: 2010-07-30 16:56
-
- 帖子: 10
- 注册时间: 2010-07-30 16:56
Re: 请问expect怎样判断是否跳过下一句啊?
已解决了,原来是
expect {
"Overwrite (y/n)?"
{send "y\r";exp_continue}
"for no passphrase):"
{send "\r"}
}
…………
expect {
"Overwrite (y/n)?"
{send "y\r";exp_continue}
"for no passphrase):"
{send "\r"}
}
…………
-
- 帖子: 125
- 注册时间: 2007-10-22 22:40
Re: 请问expect怎样判断是否跳过下一句啊?
是exp_continue命令吗?
-
- 帖子: 125
- 注册时间: 2007-10-22 22:40
Re: 请问expect怎样判断是否跳过下一句啊?
另外我想问下,如果使用ssh登录局域网内其他主机。第一次登录时,会有提示要求输入yes/no,以后登录时,就不用了。这个用什么解决啊。我也对expect不熟。
- lilydjwg
- 论坛版主
- 帖子: 4249
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 请问expect怎样判断是否跳过下一句啊?
chengmoYS 写了:另外我想问下,如果使用ssh登录局域网内其他主机。第一次登录时,会有提示要求输入yes/no,以后登录时,就不用了。这个用什么解决啊。我也对expect不熟。
代码: 全选
ssh -o StrictHostKeyChecking=no xxx