gpt4 book ai didi

Ruby Net-SFTP 无响应

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:31 25 4
gpt4 key购买 nike

我正在尝试使用 Net::SFTP 将文件上传到 SFTP 站点。

问题是 Ruby 进程永远不会返回。它被卡住、卡住、永无止境……我必须按 Ctrl-C 才能让它停止。

  • 我可以使用 sftp 在命令行中连接到 ftp 服务器。
  • 我已经在 Linux (Ubuntu) 和 Snow Leopard 上试过这段代码,它做同样的事情。
  • 安装了最新版本的 Net::SSH 和 Net::SFTP。
    • 来自 gem 列表网:
      • net-sftp (2.0.5)
      • net-ssh (2.1.4)
  • 哈希参数的不同组合(见下面的代码)
  • 尝试调用 Net::SFTP.start 而不是先创建 SSH session 。
  • 当我使用命令行工具登录并询问版本时,服务器响应“SFTP 协议(protocol)版本 3”。
  • 我正在运行 Ruby 1.8.7(2010-08-16 补丁级别 302)[i686-darwin10.7.0]

:verbose 的调试输出(最后几行):

D, [2011-07-29T17:30:52.692192 #19399] DEBUG -- tcpsocket[80c06478]: read 36 bytes
D, [2011-07-29T17:30:52.692609 #19399] DEBUG -- tcpsocket[80c06478]: received packet nr 7 type 99 len 12
I, [2011-07-29T17:30:52.692751 #19399] INFO -- net.ssh.connection.session[80bd5da0]: channel_success: 0
D, [2011-07-29T17:30:52.692817 #19399] DEBUG -- net.sftp.session[80bd5c24]: sftp subsystem successfully started
D, [2011-07-29T17:30:52.693625 #19399] DEBUG -- tcpsocket[80c06478]: queueing packet nr 8 type 94 len 28
D, [2011-07-29T17:30:52.693834 #19399] DEBUG -- tcpsocket[80c06478]: sent 52 bytes

示例代码:

require 'rubygems'
require 'net/sftp'

FTP = "someftpsite"
FTP_USER_NAME = "user"
FTP_PASSWORD = "password"
hash = {:password => FTP_PASSWORD, :verbose => :debug, :keys=>[""],:auth_methods => ["password"], :timeout => 5, :port=>22}
begin
Net::SSH.start(FTP,FTP_USER_NAME, hash) do |test|
test.sftp.upload!("localfile","remotefile")
end
rescue Exception => err
puts "error:#{err.inspect}"
end

编辑:2011 年 8 月 22 日

这似乎与SFTP服务器的交互性有关。我通过使用 expect 创建一个 shell 脚本并从 Ruby 中脱壳来运行该文件来解决这个问题。 shell 脚本是在运行时创建的。这看起来真的很 hackish,但这是我能够使用 Ruby 使其工作的唯一方法。如果其他人有建议,我很乐意找到更好的方法。

最佳答案

您可以改用公钥/私钥身份验证。 http://net-ssh.rubyforge.org/ssh/v1/chapter-2.html#s2

关于Ruby Net-SFTP 无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6879778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com