我有一些简单的代码创建一个会话对象(使用会话 gem)来运行一些 shell 命令。我在同一个 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密码提示只出现一次?