如何在rails上的ruby中使用expect脚本?

时间:2011-03-18 13:49:28

标签: ruby-on-rails expect

你能帮帮我吗?我如何在ruby中使用expect脚本。

spawn scp /tmp/*.txt remoteserver:/vg/
expect "password"
send "MY PASSWORD"
interact

因为,我需要通过scp命令将批量文件从一台服务器传输到另一台服务器。但是,当我使用通配符文件传输(/tmp/*.txt)时,它显示以下错误

没有这样的文件或目录 被信号1杀死。

然后,我改变了我的代码,如下所示。 (注意:我直接使用了文件名)。

spawn scp /tmp/first.txt remoteserver:/vg/
expect "password"
send "MY PASSWORD"
interact

所以,我刚刚进入轨道。

$files = Dir.glob("/tmp/*.txt")
for f in @files
[I need to use the expect script here]
expect {....#{f}...}
end

感谢

2 个答案:

答案 0 :(得分:2)

您确实想使用ssh密钥。设置起来并不难,那你就不用担心了。

您可能希望您的期望脚本看起来像这样:

set scp_command [linsert $argv0 scp]
lappend scp_command remote_server:/vg/
eval spawn $scp_command

expect password
send "MYPASSWORD\r"
expect eof

和Ruby部分类似

system "expect", "expect_script.exp", Dir.glob("/tmp/*.txt")

答案 1 :(得分:0)

Glenn提到使用ssh密钥 - 当你使用Expect脚本时,它们肯定会让你的生活更轻松。

几年前,我写了一篇关于如何在Windows上使用生成和使用带有putty的ssh密钥的博客文章。

http://soniahamilton.wordpress.com/2008/09/05/how-to-use-putty-with-ssh-keys-on-windows/