Exemple #1
0
    def wrap_args_with_ssh_agent(self,
                                 args,
                                 ssh_key_path,
                                 ssh_auth_sock=None,
                                 silence_ssh_add=False):
        """
        Given an existing command line and parameterization this will return the same command line wrapped with the
        necessary calls to ``ssh-agent``
        """
        if self.containerized:
            artifact_dir = os.path.join("/runner/artifacts",
                                        "{}".format(self.ident))
            ssh_key_path = os.path.join(artifact_dir, "ssh_key_data")

        if ssh_key_path:
            ssh_add_command = args2cmdline('ssh-add', ssh_key_path)
            if silence_ssh_add:
                ssh_add_command = ' '.join([ssh_add_command, '2>/dev/null'])
            ssh_key_cleanup_command = 'rm -f {}'.format(ssh_key_path)
            # The trap ensures the fifo is cleaned up even if the call to ssh-add fails.
            # This prevents getting into certain scenarios where subsequent reads will
            # hang forever.
            cmd = ' && '.join([
                args2cmdline('trap', ssh_key_cleanup_command, 'EXIT'),
                ssh_add_command, ssh_key_cleanup_command,
                args2cmdline(*args)
            ])
            args = ['ssh-agent']
            if ssh_auth_sock:
                args.extend(['-a', ssh_auth_sock])
            args.extend(['sh', '-c', cmd])
        return args
Exemple #2
0
 def wrap_args_with_ssh_agent(self, args, ssh_key_path, ssh_auth_sock=None, silence_ssh_add=False):
     """
     Given an existing command line and parameterization this will return the same command line wrapped with the
     necessary calls to ``ssh-agent``
     """
     if ssh_key_path:
         ssh_add_command = args2cmdline('ssh-add', ssh_key_path)
         if silence_ssh_add:
             ssh_add_command = ' '.join([ssh_add_command, '2>/dev/null'])
         cmd = ' && '.join([ssh_add_command,
                            args2cmdline('rm', '-f', ssh_key_path),
                            args2cmdline(*args)])
         args = ['ssh-agent']
         if ssh_auth_sock:
             args.extend(['-a', ssh_auth_sock])
         args.extend(['sh', '-c', cmd])
     return args
    def wrap_args_with_ssh_agent(self, args, ssh_key_path, ssh_auth_sock=None, silence_ssh_add=False):
        """
        Given an existing command line and parameterization this will return the same command line wrapped with the
        necessary calls to ``ssh-agent``
        """
        if self.containerized:
            artifact_dir = os.path.join("/runner/artifacts", "{}".format(self.ident))
            ssh_key_path = os.path.join(artifact_dir, "ssh_key_data")

        if ssh_key_path:
            ssh_add_command = args2cmdline('ssh-add', ssh_key_path)
            if silence_ssh_add:
                ssh_add_command = ' '.join([ssh_add_command, '2>/dev/null'])
            cmd = ' && '.join([ssh_add_command,
                               args2cmdline('rm', '-f', ssh_key_path),
                               args2cmdline(*args)])
            args = ['ssh-agent']
            if ssh_auth_sock:
                args.extend(['-a', ssh_auth_sock])
            args.extend(['sh', '-c', cmd])
        return args
Exemple #4
0
def test_args2cmdline():
    res = args2cmdline('ansible', '-m', 'setup', 'localhost')
    assert res == 'ansible -m setup localhost'