Архив

Posts Tagged ‘ssh’

Результат двухдневных извращений с SSHTools

20 августа, 2009 1 комментарий

Задача: из Java удаленно по SSH запустить приложений и забрать log-файл.

Два дня копался с SSHTools, задолбался, посмотрел JSch — ужаснулся. В итоге лень взяла вверх и тупо решил использовать готовые задачи из Apache Ant sshexec и scp с помощью AntBuilder из GDK (Groovy JDK). Смотрим, что получилось:

// SSHRunner.java
import groovy.util.AntBuilder;

import java.util.HashMap;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class SSHRunner {

 private final static Log LOG = LogFactory.getLog(SSHRunner.class);

 public final static int DEFAULT_SSH_PORT = 22;

 private int port;
 private String host, username, password;

 private AntBuilder builder = new AntBuilder();

 public SSHRunner(String host, String username, String password) {
 this(host, DEFAULT_SSH_PORT, username, password);
 }

 public SSHRunner(String host, int port, String username, String password) {
 if (StringUtils.isEmpty(host) || port < 1 || StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
 throw new IllegalArgumentException("All parameters must be at least one character");
 }

 this.host = host;
 this.port = port;
 this.username = username;
 this.password = password;
 }

 @SuppressWarnings("serial") public SSHRunner sshexec() {
 builder.invokeMethod("sshexec", new HashMap() {{
 put("host", host);
 put("trust", "true");
 put("port", Integer.toString(port));
 put("username", username);
 put("password", password);
 put("command", "cscript c:\\test.vbs");
 }});
 return this;
 }

 @SuppressWarnings("serial") public SSHRunner scp(final String filepath) {
 builder.invokeMethod("scp", new HashMap() {{
 put("trust", "true");
 put("port", Integer.toString(port));
 put("remoteFile", String.format("%s:%s@%s:c:\\testfile.txt", username, password, host));
 put("localTofile", filepath);
 }});
 return this;
 }

 public static void main(String[] args) {
 new SSHRunner("127.0.0.1", "admin", "password").sshexec().scp("/home/dulanov/Desktop/test.txt");
 }
}
Рубрики:programming Метки: , , , , ,