ruby-on-rails Errno::ENOTTY尝试将文件发送到SFTP时设备的ioctl不正确

sbtkgmzw  于 2023-05-19  发布在  Ruby
关注(0)|答案(1)|浏览(124)

我正在使用一个rails webapp,并尝试使用以下脚本将一个xml文件发送到sftp服务器:

Net::SSH.start(SFTP_HOST, sftp_user, {:port => SFTP_PORT, :password => sftp_password}) do |ssh|
ssh.sftp.connect do |sftp|
  sftp.upload!( measurements_xml_file_path( meas ).to_s ) do |event, uploader, *args|
    case even
    when :open
      puts "Starting upload"

    when :finish
      puts "Finished upload"
      return true
    end
  end
end

但是,我总是得到一个错误"Errno::ENOTTY ... Inappropriate ioctl for device"。任何帮助如何修复此错误?

qcuzuvrc

qcuzuvrc1#

IOCTL是设备输入和输出控制,这意味着错误来自发送到服务器的格式不正确或配置错误的命令。
这可能是注解中描述的PTY问题,因为服务器没有终端输出,SFTP试图显示进度条。
或者,这可能是由于向服务器发送了格式不正确的命令,因为measurements_xml_file_path( meas ).to_s的输出是未知的,可能是不正确的。SFTP有两个参数,一个用于主机上的输入文件,另一个用于服务器上的输出文件。
class Net::SFTP

To upload a single file to the remote server, simply specify both the local and remote paths:

uploader = sftp.upload("/path/to/local.txt", "/path/to/remote.txt")

相关问题