class SSHKit::CommandSudoSshForward

Public Instance Methods

environment_hash() click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 25
def environment_hash
  default_env.merge(options_env)
end
ssh_agent() { || ... } click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 29
def ssh_agent(&block)
  return yield unless ssh_forwarding_required?
  "setfacl -m #{options[:user]}:x $(dirname $SSH_AUTH_SOCK) && setfacl -m #{options[:user]}:rw $SSH_AUTH_SOCK && %s" % yield
end
to_command() click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 5
def to_command
  return command.to_s unless should_map?

  within do
    ssh_agent do
      umask do
        with do
          user do
            in_background do
              group do
                to_s
              end
            end
          end
        end
      end
    end
  end
end
user() { || ... } click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 34
def user(&block)
  return yield unless options[:user]
  shell = options[:shell] || 'sh'
  "sudo -u #{options[:user]} #{environment_string + " " unless environment_string.empty?}-- #{shell} -c '%s'" % %Q{#{yield}}
end
with() { || ... } click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 40
def with(&block)
  return yield if environment_hash.empty? || sudo_command?
  "( #{environment_string} %s )" % yield
end

Private Instance Methods

default_env() click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 51
def default_env
  SSHKit.config.default_env || {}
end
default_ssh_options() click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 55
def default_ssh_options
  ssh_forwarding_required? ? {'SSH_AUTH_SOCK' => '$SSH_AUTH_SOCK'} : {}
end
options_env() click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 47
def options_env
  (options[:env] || {}).merge(default_ssh_options)
end
ssh_command?() click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 63
def ssh_command?
  options.fetch(:ssh_commands, []).include?(command.to_sym)
end
ssh_forwarding_enabled?() click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 67
def ssh_forwarding_enabled?
  options[:host] && options[:host].ssh_options[:forward_agent]
end
ssh_forwarding_required?() click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 59
def ssh_forwarding_required?
   ssh_command? && sudo_command? && ssh_forwarding_enabled?
end
sudo_command?() click to toggle source
# File lib/sshkit/command_sudo_ssh_forward.rb, line 71
def sudo_command?
  options[:user]
end