期望不在我的Bash脚本中工作

时间:2014-09-27 16:37:08

标签: linux bash shell unix expect

我正在尝试使用小型bash脚本执行expect命令,以使用密钥身份验证方法登录服务器。我的脚本如下:

#!/bin/bash
HOST=$1
/usr/bin/expect -c "
                    spawn ssh -i /root/.ssh/id_rsa root@$HOST  
                    expect -exact "Enter passphrase for key '/root/.ssh/id_rsa': " ;
                    send "PASSPHRASE\n" ; 
                    interact
                   "

错误输出是:

spawn ssh -i /root/.ssh/id_rsa root@server.domain.com
couldn't read file "passphrase": no such file or directory

你能帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

您的代码中存在引用问题。而不是尝试在命令行上将命令传递给expect,而不是将代码保存为Expect脚本。然后,您可以从shell脚本或其他方式运行它。

<强> script.exp

#!/usr/bin/expect
# usage: ./script.exp host
set HOST [lindex $argv 0]
spawn ssh -i /root/.ssh/id_rsa root@$HOST  
expect -exact "Enter passphrase for key '/root/.ssh/id_rsa': "
send "PASSPHRASE\n"
interact

但是,如果您在这种情况下使用Expect进行了所有操作,那么我建议使用ssh-agent代替。