Автоматически закрывать и отключать сеанс java sshj

Я использую библиотеку sshj для Java.

Мне нужно открыть сеанс ssh на удаленном сервере, выполнить команду, которая может выполняться в течение многих минут, а затем продолжить выполнение в моем java-коде. Как только команда, запущенная на удаленном сервере, завершена, я бы хотел, чтобы сеанс ssh закрылся, а sshclient отключился.

Я видел следующий пример кода:

public class Exec {
   public static void main(String... args) throws IOException {
        final SSHClient ssh = new SSHClient();
        ssh.loadKnownHosts();

        ssh.connect("localhost");
        try {
            ssh.authPublickey(System.getProperty("user.name"));
            final Session session = ssh.startSession();
            try {
                final Command cmd = session.exec("ping -c 1 google.com");
                System.out.println(IOUtils.readFully(cmd.getInputStream()).toString());
                cmd.join(5, TimeUnit.SECONDS);
                System.out.println("\n** exit status: " + cmd.getExitStatus());
            } finally {
                session.close();
            }
        } finally {
            ssh.disconnect();
        }
    }
}

По сути, я не хочу ждать завершения команды (без вызова cmd.join), и мне нужно, чтобы session.close() и ssh.disconnect() вызывались автоматически после выхода из команды. Это возможно?


person bob smith    schedule 05.06.2013    source источник


Ответы (1)


Возможно, я не смогу точно ответить на свой вопрос, но, возможно, помогу другим, пытающимся сделать что-то похожее на то, что делал я. Когда я опубликовал сообщение, у меня сложилось впечатление, что сеанс ssh должен оставаться открытым для завершения команды, но я не думаю, что это так.

Итак, что я пытался сделать, это запустить удаленный сеанс ssh через java и запустить сценарий оболочки на удаленной машине. Сценарий оболочки может занять до 10-15 минут. Я протестировал короткий тайм-аут (5 секунд), и скрипт продолжал работать после отключения сеанса... чего я и хотел.

person bob smith    schedule 15.07.2013