diff --git a/pom.xml b/pom.xml
index 8b2bf69..10966a9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,6 +42,11 @@
telegrambots
6.7.0
+
+ com.jcraft
+ jsch
+ 0.1.55
+
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java b/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java
index f6bd3cc..ea862b9 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java
@@ -2,8 +2,11 @@ package ru.ldeloff.servermonitorbot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import ru.ldeloff.servermonitorbot.config.SshConfig;
@SpringBootApplication
+@EnableConfigurationProperties(SshConfig.class)
public class ServerMonitorBotApplication {
public static void main(String[] args) {
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/config/SshConfig.java b/src/main/java/ru/ldeloff/servermonitorbot/config/SshConfig.java
new file mode 100644
index 0000000..deb3255
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/config/SshConfig.java
@@ -0,0 +1,21 @@
+package ru.ldeloff.servermonitorbot.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+import ru.ldeloff.servermonitorbot.model.SshServer;
+
+import java.util.List;
+
+@Configuration
+@ConfigurationProperties(prefix = "ssh")
+public class SshConfig {
+ private List servers;
+
+ public List getServers() {
+ return servers;
+ }
+
+ public void setServers(List servers) {
+ this.servers = servers;
+ }
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/init/SshConnect.java b/src/main/java/ru/ldeloff/servermonitorbot/init/SshConnect.java
new file mode 100644
index 0000000..8cc1a6f
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/init/SshConnect.java
@@ -0,0 +1,20 @@
+package ru.ldeloff.servermonitorbot.init;
+
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+import ru.ldeloff.servermonitorbot.service.SshService;
+
+@Component
+public class SshConnect implements ApplicationRunner {
+ final SshService sshService;
+
+ public SshConnect(SshService sshService) {
+ this.sshService = sshService;
+ }
+
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
+ sshService.ConnectToAllServer();
+ }
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/StartBot.java b/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java
similarity index 96%
rename from src/main/java/ru/ldeloff/servermonitorbot/StartBot.java
rename to src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java
index 53fad7e..2a9ca6c 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/StartBot.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java
@@ -1,4 +1,4 @@
-package ru.ldeloff.servermonitorbot;
+package ru.ldeloff.servermonitorbot.init;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/SshServer.java b/src/main/java/ru/ldeloff/servermonitorbot/model/SshServer.java
new file mode 100644
index 0000000..f06f154
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/model/SshServer.java
@@ -0,0 +1,15 @@
+package ru.ldeloff.servermonitorbot.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.stereotype.Component;
+
+@Setter
+@Getter
+@Component
+public class SshServer {
+ private String host;
+ private int port;
+ private String user;
+ private String password;
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/SshService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/SshService.java
new file mode 100644
index 0000000..75dac30
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/service/SshService.java
@@ -0,0 +1,11 @@
+package ru.ldeloff.servermonitorbot.service;
+
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
+import ru.ldeloff.servermonitorbot.model.SshServer;
+
+
+public interface SshService {
+ void ConnectToAllServer();
+ Session ConnectToServer(SshServer sshServer) throws JSchException;
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/SshServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/SshServiceImpl.java
new file mode 100644
index 0000000..2b41c02
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/service/SshServiceImpl.java
@@ -0,0 +1,51 @@
+package ru.ldeloff.servermonitorbot.service;
+
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import ru.ldeloff.servermonitorbot.config.SshConfig;
+import ru.ldeloff.servermonitorbot.model.SshServer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@Service
+public class SshServiceImpl implements SshService{
+
+ private final List sshServers;
+
+ @Autowired
+ public SshServiceImpl(SshConfig sshConfig) {
+ this.sshServers = sshConfig.getServers();
+ }
+
+ private List sessions = new ArrayList<>();
+
+ @Override
+ public void ConnectToAllServer() {
+ sshServers.forEach(sshServer -> {
+ try {
+ Session session = ConnectToServer(sshServer);
+ log.info("Успешно подключён к " + sshServer.getHost());
+ sessions.add(session);
+ } catch (JSchException e) {
+ log.warn("Не удалось соединиться с " + sshServer.getHost() + ": " + e.getMessage());
+ }
+ });
+ }
+
+ @Override
+ public Session ConnectToServer(SshServer sshServer) throws JSchException {
+ Session session = new JSch().getSession(sshServer.getUser(),
+ sshServer.getHost(),
+ sshServer.getPort());
+ session.setPassword(sshServer.getPassword());
+ session.setConfig("StrictHostKeyChecking", "no");
+ session.connect();
+ return session;
+ }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 4529629..84ef8e2 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,13 @@
bot:
name: "ServerMonitorBot"
token: "token"
+ssh:
+ servers:
+ -
+ host: "url"
+ port: 22
+ user: "user"
+ password: "pass"
+