Net::SSH で sudo

できたっぽい。

Net::SSH.start( host, port, user, pass ) do |session|
  sh = session.shell.sync
  print sh.sudo( "-S yum update", pass ).stdout
  sh.exit
end

Capistrano だと非同期でやってるぽい。

で、複数の処理をさせる場合、

sudo su

してからでもいいかもしれないけど、

sh.su do
  sh.yum( "update" )
  sh.shutdown( "-r now" )
end

とか書けるようにがんばるとみんな幸せになれるかも。