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
感谢
答案 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/