Posts Tagged ‘apache ant’
Результат двухдневных извращений с 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
ant builder, apache ant, gdk, groovy, jsch, ssh