我正在尝试将字符串写入文件,然后将其上传到远程服务器。
Net::SSH.start( "localhost", "root" ) do |ssh|
Tempfile.open('vh_', Rails.root.join('tmp') ) do |f|
f.write("FILE_CONTENTS")
# at this point, i have confirmed that f.path is valid and that file is not empty
ssh.scp.upload!(f.path, "/remote/path")
f.close!
end
#more ssh commands follow
end
ssh root@localhost 的原因是因为这个文件(将来)会被上传到其他服务器,使用 localhost 只是为了测试。此代码成功创建临时文件(内容正确),但上传后,远程文件为空(0 B)。
它在我的本地(开发)机器上运行良好,但是在上传到服务器时,文件为空。我的本地运行的是 Xubuntu 13.04,服务器是 Ubuntu Server 13.10。