gem install net-sftp
Net::SFTP.start("192.168.1.1", "user", keys: ["/hoge/user/.ssh/privatekey"], passphrase: "password") { |sftp|
# download
sftp.download("/tmp/readme.txt", "/home/user/readme-local.txt")
# rename
ret = sftp.rename("/tmp/123.txt", "/tmp/456.txt")
ret = sftp.remove("/tmp/456.txt")
# files list(1)
# glob は、第2パラメータに該当するファイルを、配下のディレクトリに渡ってサーチするため、
# 対象ディレクトリ配下の階層が深い場合は時間がかかるので注意が必要
# 後述の entries, foreach は、指定されたディレクトリ直下だけが対象となり、再帰的にサーチを行わない
sftp.dir.glob("/tmp", "*.txt") { |entry|
puts entry.name}
}
# files list(2)
sftp.dir.entries("/tmp").map { |entry|
puts entry.name}
puts entry.longname
puts "file" if entry.file?
puts "directory" if entry.directory?
puts "symlink" if entry.symlink?
puts Time.at(entry.attributes.mtime)}
}
# files list(3)
sftp.dir.foreach("/tmp") { |entry|
puts entry.name}
puts entry.longname
puts "file" if entry.file?
puts "directory" if entry.directory?
puts "symlink" if entry.symlink?
puts Time.at(entry.attributes.mtime)}
}
}