module ZTK::SSH::File
Public Instance Methods
file(options={}, &block)
click to toggle source
Opens a temporary local file, yielding this to the supplied block. Once the block returns the temporary file is uploaded to the remote host and installed as the supplied target.
If the optional 'chown' or 'chmod' options are supplied then their respective actions will be taken on the target file on the remote host.
@param [Hash] options The options hash. @option options [String] :target The target file on the remote host. @option options [String] :chown A user:group representation of who
to change ownership of the target file to (i.e. 'root:root').
@option options [String] :chmod An octal file mode which to set the
target file to (i.e. '0755').
@return [Boolean] Returns true if successful.
# File lib/ztk/ssh/file.rb, line 22 def file(options={}, &block) target = options[:target] chown = options[:chown] chmod = options[:chmod] target.nil? and raise SSHError, "You must supply a target file!" !block_given? and raise SSHError, "You must supply a block!" file_tempfile = Tempfile.new("file") remote_tempfile = ::File.join("", "tmp", ::File.basename(file_tempfile.path.dup)) file_tempfile.close! local_tempfile = Tempfile.new("tempfile-local") !block.nil? and block.call(local_tempfile) local_tempfile.respond_to?(:flush) and local_tempfile.flush self.upload(local_tempfile.path, remote_tempfile) self.exec(%(sudo mv -fv #{remote_tempfile} #{target}), :silence => true) chown.nil? or self.exec(%(sudo chown -v #{chown} #{target}), :silence => true) chmod.nil? or self.exec(%(sudo chmod -v #{chmod} #{target}), :silence => true) local_tempfile.close! true end