首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Net::SCP::Error (SCP未成功完成()):

Net::SCP::Error (SCP未成功完成()):
EN

Stack Overflow用户
提问于 2010-12-17 05:48:45
回答 9查看 10.8K关注 0票数 14

我有一个脚本,它将执行从一个服务器到另一个服务器的文件传输,但它给出了一个错误:

代码语言:javascript
复制
Net::SCP::Error (SCP did not finish successfully ()):

有人能帮我吗?这是我的代码。

代码语言:javascript
复制
Net::SCP.start( 's.com', 'username', :password => 'password' ) do|scp|
  scp.upload!( source, destination )
end
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-04-29 03:34:35

我今天遇到了这个问题。发现我的本地文件(在您的示例中是source)指向了一个不存在的文件。祝好运。

票数 11
EN

Stack Overflow用户

发布于 2011-07-18 07:51:08

如果要将文件上载到远程服务器上尚不存在的文件夹,也会发生此错误。在SCP中,文件夹创建不是隐式的

票数 9
EN

Stack Overflow用户

发布于 2013-06-14 01:25:12

我有一个稍微不同的错误,在括号中包含了退出代码:

代码语言:javascript
复制
Net::SCP::Error Exception: SCP did not finish successfully (1)

一开始,我认为这可能是由于源文件不存在或目标目录不存在而引起的,但事实证明这是因为我传递的是源文件的路径名对象,而不是字符串。

代码语言:javascript
复制
my_file = Rails.root.join('config/my_file') # my_file.class => Pathname
scp.upload!(my_file,  "/var/tmp/dev.pub")

<Net::SCP::Error: SCP did not finish successfully (1)>
"gems/net-scp-1.0.4/lib/net/scp.rb:352:in `start_command'",                                                                                                                                                                                                   "gems/net-ssh-2.6.7/lib/net/ssh/connection/channel.rb:590:in `call'",
"gems/net-ssh-2.6.7/lib/net/ssh/connection/channel.rb:590:in `do_close'",                                                                                                                                                                                     "gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:580:in `channel_close'",                                                                                                                                                                                "gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:459:in `send'",
"gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:459:in `dispatch_incoming_packets'",
"gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:216:in `preprocess'",                                                                                                                                                                                   "gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:200:in `process'",
"gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:164:in `loop'",                                                                                                                                                                                         "gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:164:in `loop_forever'",
"gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:164:in `loop'",                                                                                                                                                                                         "gems/net-ssh-2.6.7/lib/net/ssh/connection/channel.rb:269:in `wait'",
"gems/net-scp-1.0.4/lib/net/scp.rb:279:in `upload!'",

文件正在被复制到正确的远程位置,但net-ssh中的某些内容退出了1而不是0,我没有费心去查找该调用在堆栈跟踪中的位置

代码语言:javascript
复制
# gems/net-scp-1.0.4/lib/net/scp:352
channel.on_close { |ch| raise Net::SCP::Error, "SCP did not finish successfully (#{ch[:exit]})" if ch[:exit] != 0 }

只需将路径名对象改为字符串即可使一切正常工作

代码语言:javascript
复制
my_file = Rails.root.join('config/my_file').to_s
scp.upload!(my_file,  "/var/tmp/dev.pub")
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4465690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档