いくつかのシェル コマンドを実行するために、Session オブジェクトを ( session gem を使用して)作成する単純なコードがいくつかあります。同じ BEGIN ブロック内で sudo を複数回使用していますが、すべてのコマンドで sudo パスワードの入力を求められます。セッションが作成された後に初めて要求され、セッションを再利用してこれを回避する必要があると思います。
#!/usr/bin/env ruby
require 'rubygems'
require 'date'
require 'mysql2'
require 'session'
begin
sh = Session::Shell.new
puts "Starting file system copy."
$WWW_ROOT = "~/Downloads/"
$MASTER='/git/library/dev/.git'
$DOMAIN = ARGV[1].to_s
$DOC_ROOT = [$WWW_ROOT, $DOMAIN].join
stdout, stderr = sh.execute ("cd #{$WWW_ROOT} && ls && sudo git clone -q #{$MASTER} #{$DOMAIN}")
if stderr.length > 0
puts stderr
puts 'Error on git cloning.'
else
puts stdout, stderr
puts "Git cloning finished."
end
stdout, stderr = sh.execute ("cd #{$DOC_ROOT} && sudo git checkout lib_dev")
if stderr.length > 0
puts stderr
puts 'Error on Git lib_dev checkout.'
else
puts stdout, stderr
puts "Git lib_dev checkout finished."
end
end
sudoパスワードプロンプトを一度だけ発生させるにはどうすればよいですか?