// Path: server/src/main/java/io/pne/veth/server/handlers/service/ICommandService.java
// public interface ICommandService {
// 
//     String executeCommand(ShellCommand aCommand) throws IOException, InterruptedException;
// }
// 
// Path: server/src/main/java/io/pne/veth/server/handlers/service/model/ShellCommand.java
// public class ShellCommand {
// 
//     public final String[] arguments;
// 
//     private ShellCommand(String[] aArguments) {
//         arguments = aArguments;
//     }
// 
//     public String getCommand() {
//         StringBuilder sb = new StringBuilder();
//         sb.append(arguments[0]);
//         for(int i=1; i<arguments.length; i++) {
//             sb.append(' ');
//             sb.append(arguments[i]);
//         }
//         return sb.toString();
//     }
// 
//     public static class Builder {
//         private final List<String> arguments;
// 
//         public Builder(String aCommandName) {
//             arguments = new ArrayList<>();
//             arguments.add(aCommandName);
//         }
// 
//         public Builder add(String aArgument) {
//             arguments.add(aArgument);
//             return this;
//         }
// 
//         public ShellCommand build() {
//             return new ShellCommand(arguments.toArray(new String[arguments.size()]));
//         }
//     }
// 
//     @Override
//     public String toString() {
//         return "ShellCommand{" +
//                 "arguments=" + Arrays.toString(arguments) +
//                 '}';
//     }
// }


import io.pne.veth.server.handlers.service.ICommandService;
import io.pne.veth.server.handlers.service.model.ShellCommand;
import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.common.IOUtils;
import net.schmizz.sshj.connection.channel.direct.Session;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
package io.pne.veth.server.handlers.service.impl;



public class CommandServiceSsh implements ICommandService {

    @Override
// Path: server/src/main/java/io/pne/veth/server/handlers/service/ICommandService.java
// public interface ICommandService {
// 
//     String executeCommand(ShellCommand aCommand) throws IOException, InterruptedException;
// }
// 
// Path: server/src/main/java/io/pne/veth/server/handlers/service/model/ShellCommand.java
// public class ShellCommand {
// 
//     public final String[] arguments;
// 
//     private ShellCommand(String[] aArguments) {
//         arguments = aArguments;
//     }
// 
//     public String getCommand() {
//         StringBuilder sb = new StringBuilder();
//         sb.append(arguments[0]);
//         for(int i=1; i<arguments.length; i++) {
//             sb.append(' ');
//             sb.append(arguments[i]);
//         }
//         return sb.toString();
//     }
// 
//     public static class Builder {
//         private final List<String> arguments;
// 
//         public Builder(String aCommandName) {
//             arguments = new ArrayList<>();
//             arguments.add(aCommandName);
//         }
// 
//         public Builder add(String aArgument) {
//             arguments.add(aArgument);
//             return this;
//         }
// 
//         public ShellCommand build() {
//             return new ShellCommand(arguments.toArray(new String[arguments.size()]));
//         }
//     }
// 
//     @Override
//     public String toString() {
//         return "ShellCommand{" +
//                 "arguments=" + Arrays.toString(arguments) +
//                 '}';
//     }
// }


// Path: server/src/main/java/io/pne/veth/server/handlers/service/impl/CommandServiceSsh.java
import io.pne.veth.server.handlers.service.ICommandService;
import io.pne.veth.server.handlers.service.model.ShellCommand;
import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.common.IOUtils;
import net.schmizz.sshj.connection.channel.direct.Session;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

package io.pne.veth.server.handlers.service.impl;



public class CommandServiceSsh implements ICommandService {

    @Override
    public String executeCommand(ShellCommand aCommand) throws IOException {