Net::SCP2009/05/11

About

rubyのSCPライブラリ Net::SCP についてのメモ

インストールは、例によって

# sudo gem install net-scp

接続

メソッドは2種類

Net::SCP.new(session)

引数は Net::SSH の session Object 戻り値は Net::SCP の session Object

sshを繋いで、セッションを色々取り回したい時には便利なのかも。

Net::SCP.start(host, username, options={}) {|scp| ...}   

ブロックを与えた場合はブロックを脱出する際にセッションを閉じてくれる。

普通はこれを使う。

いずれにせよ、sshの接続自体は Net::SSH に依存するので、有効なオプションはこちらを参照。

パスワードでログイン

:password => the password to use to login

を指定する。

鍵認証

一般的な場所にある鍵が自動的に使用される。

検索対象は

~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh2/id_rsa, ~/.ssh2/id_dsa

それ以外を使用したい場合は

:keys => an array of file names of private keys to use for publickey and hostbased authentication 

を指定する。 String の Array を与えろと書いてあるけど、String でも良いみたいだ。

パスフレーズは

:passphrase => the passphrase to use when loading a private key (default is nil, for no passphrase) 

に与える。

その他に役立ちそうなオプション

:config => set to true to load the default OpenSSH config files

ssh_configの読み込み指定。

これも、デフォルトでそれっぽい場所のそれっぽいファイルを読む。 この動作を抑制したい場合は false を指定する。

:user_known_hosts_file 
:global_known_hosts_file

known_hosts ファイルの指定

ダウンロード

メソッドは2種類。これはアップロードも同じ

#download(remote, local, options={}, &progress)
#download!(remote, local=nil, options={}, &progress)

引数の扱いは原則同じで、!の有無はダウンロード終了までのブロッキングの有無。 !がある方がブロッキングを行う。

!が無い方は、セッションを閉じる前に、明示的に

#wait

メソッドを利用して、転送の完了を待つ必要がある。

download! メソッドでは、ローカルファイル名に nil を与えることで、ファイルの内容を String の戻り値として得ることができる。

アップロード

#upload(local, remote, options={}, &progress)
#upload!(local, remote, options={}, &progress)

ダウンロードのように、直接 String をアップロードする方法は無いみたい。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://dragonstar.asablo.jp/blog/2009/05/11/4298934/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。