2009年03月25日(水) [長年日記]
■ [ruby] Net::SCP を使った
RubyでSCPを使ってファイルをアップロードするサンプルをメモ。Net::SCPライブラリを使う(追記:最新のドキュメントはgithub上にあるみたい)。
サンプルではパスワード認証を使っているが、公開鍵認証も使える。WindowsでPageantが動いているとパスフレーズを与えなくても動いた。
#!/usr/bin/ruby
# coding: utf-8
require "net/scp"
require "net/ssh"
require "net/ssh/prompt"
# Promptをincludeするとpromptメソッドが使えるようになる。
# ただし別途HighLineライブラリをインストールすべき。
# see: http://net-ssh.rubyforge.org/ssh/v2/api/classes/Net/SSH/PromptMethods.html
include Net::SSH::Prompt
unless ARGV.size == 2
$stderr.puts "Usage: #{$0} <local file> <remote host>"
exit 2
end
local_path = remote_path = ARGV[0]
remote_host = ARGV[1]
# ユーザ名とパスワードを入力してもらう。
# promptの第2引数にfalseを指定するとエコーバックしなくなる。
user_name = prompt("Please input user name:", true)
password = prompt("Please input #{user_name}'s password:", false)
puts "Uploading to #{user_name}@#{remote_host} ..."
Net::SCP.start(remote_host, user_name, {:password => password}) {|scp|
scp.upload!(local_path, remote_path) {|ch, name, sent, total|
print "\r #{name}: #{sent}/#{total} (bytes)"
}
}
puts
■ やること
- 換金
[ツッコミを入れる]