/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.plugin.machine.ssh; import org.eclipse.che.api.machine.server.exception.MachineException; /** * Client for communication with ssh machine using SSH protocol. * * <p/>Client should be started with {{@link #start()}} before performing communication with a server. * <br/>Server should be stopped with {{@link #stop()}} after finishing of communication with a server. * * @author Alexander Garagatyi */ public interface SshClient { /** * Gets address of server this SSH client is connected to. */ String getHost(); /** * Starts ssh client. * * <p/>Client should be stopped to perform connection cleanup on SSH server. */ void start() throws MachineException; /** * Stops client to perform connection cleanup on SSH server. */ void stop() throws MachineException; /** * Creates {@link SshProcess} that represents command that can be started over SSH protocol. * * @param commandLine * command line to start over SSH * @return ssh process, it should be started separately. * @throws MachineException */ SshProcess createProcess(String commandLine) throws MachineException; /** * Copies file(s) from local machine to remote machine using SSH protocol. * * <p/>Copying can be performed using SCP or SFTP. * * @param sourcePath * path on localhost that should be copied * @param targetPath * path on remote host where file(s) from sourcePath should be copied * @throws MachineException */ void copy(String sourcePath, String targetPath) throws MachineException; }