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
■ やること
- 換金