Class: SSHKit::CommandSudoSshForward

Inherits:
Command
  • Object
show all
Defined in:
lib/sshkit/command_sudo_ssh_forward.rb

Instance Method Summary collapse

Instance Method Details

#environment_hashObject



33
34
35
# File 'lib/sshkit/command_sudo_ssh_forward.rb', line 33

def environment_hash
  default_env.merge(options_env)
end

#environment_stringObject



23
24
25
26
27
28
29
30
31
# File 'lib/sshkit/command_sudo_ssh_forward.rb', line 23

def environment_string
  environment_hash.collect do |key,value|
    if key.is_a? Symbol
      "#{key.to_s.upcase}=#{value}"
    else
      "#{key.to_s}=#{value}"
    end
  end.join(' ')
end

#ssh_agent(&block) ⇒ Object



37
38
39
40
# File 'lib/sshkit/command_sudo_ssh_forward.rb', line 37

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_commandObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/sshkit/command_sudo_ssh_forward.rb', line 3

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(&block) ⇒ Object



42
43
44
45
46
# File 'lib/sshkit/command_sudo_ssh_forward.rb', line 42

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(&block) ⇒ Object



48
49
50
51
# File 'lib/sshkit/command_sudo_ssh_forward.rb', line 48

def with(&block)
  return yield if environment_hash.empty? || sudo_command?
  "( #{environment_string} %s )" % yield
end