gpt4 book ai didi

ruby - 将 Net::FTP 实例方法 `open` 用于具有自定义端口的 FTP

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

我有一个远程 ftp 服务器。
我可以使用 Cyber​​Duck 或终端 ftp 客户端连接到它。

尝试连接 Net::FTP 时,我可以这样做:

ftp=Net::FTP.new
ftp.connect('url', 'port')
ftp.login('username', 'password')

但是,这样做:

Net::FTP.open('url', 'username', 'password')

返回 Errno::ECONNREFUSED:连接被拒绝 - connect(2)

似乎 .open 不接受端口参数,导致我使用自定义端口时出错。但我需要使用 .open 方法,因为它用于我使用的外部 gem (carrierwave-webdav)。
对此有任何解决方法,还是我应该创建自己的分支?
如何使用 .open 方法连接到我的 ftp?

最佳答案

如果您将 host 参数传递给 Net::FTP.new 或强制传递给 Net::FTP.open 它会尝试立即连接,因此您必须以其他方式传递非标准端口号,例如与主机名一起传递:

Net::FTP.open('url:port', 'username', 'password')

更新:遗憾的是,Ruby 网络库不解析主机字符串,因此您需要单独执行所有连接步骤:

ftp = Net::FTP.new  # don't pass hostname or it will try open on default port
ftp.connect('url', port) # here you can pass a non-standard port number
ftp.login('username', 'password')
ftp.passive = true # optional, if PASV mode is required

关于ruby - 将 Net::FTP 实例方法 `open` 用于具有自定义端口的 FTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19134138/

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