blob: e68a91281da291996fe97efa77092611880433fc [file]
#!/usr/bin/env python
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
""" This module contains tools related to ssh used by the buildbot scripts. """
import shell_utils
def PutSCP(local_path, remote_path, username, host, port, recurse=False):
""" Send a file to the given host over SCP. Assumes that public key
authentication is set up between the client and server.
local_path: path to the file to send on the client
remote_path: destination path for the file on the server
username: ssh login name
host: hostname or ip address of the server
port: port on the server to use
recurse: boolean indicating whether to transmit everything in a folder
"""
# TODO: This will hang for a while if the host does not recognize the client
cmd = ['scp']
if recurse:
cmd += ['-r']
cmd += ['-P', port, local_path, '%s@%s:%s' % (username, host, remote_path)]
shell_utils.run(cmd)
def GetSCP(local_path, remote_path, username, host, port, recurse=False):
""" Retrieve a file from the given host over SCP. Assumes that public key
authentication is set up between the client and server.
local_path: destination path for the file on the client
remote_path: path to the file to retrieve on the server
username: ssh login name
host: hostname or ip address of the server
port: port on the server to use
recurse: boolean indicating whether to transmit everything in a folder
"""
# TODO: This will hang for a while if the host does not recognize the client
cmd = ['scp']
if recurse:
cmd += ['-r']
cmd += ['-P', port, '%s@%s:%s' % (username, host, remote_path), local_path]
shell_utils.run(cmd)
def RunSSH(username, host, port, command, echo=True):
""" Login to the given host and run the given command.
username: ssh login name
host: hostname or ip address of the server
port: port on the server to use
command: command to run on the server in list format
"""
# TODO: This will hang for a while if the host does not recognize the client
return shell_utils.run(['ssh', '-p', port, '%s@%s' % (username, host),
'%s' % (' '.join(command).replace('"', '\"'))],
echo=echo)