net-sshの練習

RubySSH経由でリモートのLinuxマシンを操作するとかいうので、net-sshを練習している。
いかんせんドキュメントが英語なもんで進みが悪い。
http://net-ssh.rubyforge.org/

require "rubygems"
require "net/ssh"

host = "example.com"
port = 22
user = "user_name"
pass = "user_pass"

Net::SSH.start(host, port, user, pass) do |session|
  shell = session.shell.sync
  
# コマンドを実行
  shell.send_command("cd /usr/local/src")
  #shell.cd "/usr/local/src" # 上に同じ(method_missingを使ってる)
  
# コマンドの標準出力を得る
  out = shell.send_command("pwd")
  #out = shell.pwd # 上に同じ
  puts out.stdout
  
# コマンドの標準エラー出力を得る
  # 存在しないディレクトリに移動 -> エラーになる
  out = shell.cd "/abc"
  # statusが0でない場合、stderrに標準エラー出力が入る
  puts out.stderr unless out.status.zero?
  
# mysqlクライアント  以下、結果は全部同じ
  # case1
  out = shell.send_command(%Q/echo "select count(*) from table_name" | mysql -u db_user --password=db_pass db_name/)
  puts out.stdout
  
  # case2
  shell.send_command(%Q/echo "select count(*) from table_name;" > select.sql/)
  out = shell.send_command("mysql -u db_user --password=db_pass db_name < select.sql")
  puts out.stdout
  
  # case3
  out = shell.send_command("mysql -u db_user --password=db_pass db_name", <<-CMD)
    select count(*) from table_name;
    exit
  CMD
  puts out.stdout
  
end