diff --git a/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepositoryImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepositoryImpl.java index 42f2f72..ec028ab 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepositoryImpl.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepositoryImpl.java @@ -11,9 +11,7 @@ import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import ru.ldeloff.servermonitorbot.config.SshConfig; import ru.ldeloff.servermonitorbot.model.SshServer; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; @Slf4j @Repository @@ -29,7 +27,7 @@ public class SshRepositoryImpl implements SshRepository { this.sshServers = sshConfig.getServers(); } - private List sessions = new ArrayList<>(); + private Set sessions = new HashSet<>(); @Override public void connectToAllServer() { @@ -38,7 +36,6 @@ public class SshRepositoryImpl implements SshRepository { Session session = connectToServer(sshServer); sshServer.setSession(session); log.info("Успешно подключён к " + sshServer.getHost()); - sessions.add(session); } catch (JSchException e) { log.warn("Не удалось соединиться с " + sshServer.getHost() + ": " + e.getMessage()); } @@ -54,6 +51,7 @@ public class SshRepositoryImpl implements SshRepository { session.setConfig("StrictHostKeyChecking", "no"); session.setTimeout(TIMEOUT); session.connect(); + sessions.add(session); return session; } @@ -67,7 +65,7 @@ public class SshRepositoryImpl implements SshRepository { @Override public String getStatusSessions() { - StringBuilder text = new StringBuilder("Статус соединения: \n"); + StringBuilder text = new StringBuilder("Статус соединения (может выполняться долго): \n"); sshServers.forEach(server -> { text.append(server.getName()) .append(": ") @@ -84,10 +82,27 @@ public class SshRepositoryImpl implements SshRepository { private String checkStatusServer(SshServer server) { if (Objects.isNull(server.getSession())) { - return "нет соединения"; - } else { - return server.getSession().isConnected() ? "OK" : "отключён"; + try { + connectToServer(server); + return "OK"; + } catch (JSchException e) { + log.warn("Не удалось соединиться с " + server.getHost() + ": " + e.getMessage()); + return "нет соединения"; + } } + + if (server.getSession().isConnected()) { + return "OK"; + } else { + try { + connectToServer(server); + return "OK"; + } catch (JSchException e) { + log.warn("Не удалось соединиться с " + server.getHost() + ": " + e.getMessage()); + return "потеряно соединение"; + } + } + } }