Translate

Sonntag, 8. November 2015

Java SSH mit Config.xml



Klasse SSHServerRestart:
package SSHServerRestartPackage;

import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

import java.beans.XMLDecoder;
import java.io.*;
import java.net.URL;
import java.util.Properties;
import java.util.Scanner;

public class SSHServerRestart
{
    public static void main(String args[]) throws IOException
    {    
        Config config = new Config();

        try
        {
            //URL location = SSHServerRestart.class.getProtectionDomain().getCodeSource().getLocation();
            //config = InitConfiguration(location.getPath() + "Config.xml");
            //String dir = System.getProperty("user.dir");
            //config = InitConfiguration(dir + "\\Config.xml");
            InputStream input = SSHServerRestart.class.getResourceAsStream("/SSHServerRestartPackage/Config.xml");
            config = InitConfiguration(input);
            //BufferedInputStream input = (BufferedInputStream) SSHServerRestart.class.getResourceAsStream("/SSHServerRestartPackage/Config.xml");
            //config = InitConfiguration(input);
            System.out.println("Konfiguration geladen.");
            JSch jsch = new JSch();
            Session session = jsch.getSession(config.getUser(), config.getServerName(), config.getServerPort());
            session.setPassword(config.getPassword());
            Properties props = new Properties();
            props.put("StrictHostKeyChecking", "no");
            session.setConfig(props);
            session.connect();
            ChannelExec channel = (ChannelExec) session.openChannel("exec");
            System.out.println("Server wird neu gestartet");
            channel.setCommand("reboot");
            channel.connect();
            channel.disconnect();
            session.disconnect();
            System.out.println("Beliebige Taste drücken, um das Programm zu beenden");
            System.in.read();
        }
        catch (Exception e)
        {
            System.err.println(e.getMessage());
            System.out.println("Beliebige Taste drücken, um das Programm zu beenden");
            System.in.read();
        }
    }
   
    private static String convertStreamToString(java.io.InputStream is)
    {
        Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
        return s.hasNext() ? s.next() : "";
    }
   
    private static Config InitConfiguration(String filename) throws IOException
    {
        Config configTemp = new Config();
        try
        {
            FileInputStream fis = new FileInputStream(filename);
            BufferedInputStream bis = new BufferedInputStream(fis);
            XMLDecoder xmlDecoder = new XMLDecoder(bis);
            configTemp = (Config) xmlDecoder.readObject();
            xmlDecoder.close();
        }
        catch (Exception e)
        {
            System.err.println(e.getMessage());
            System.out.println("Beliebige Taste drücken, um das Programm zu beenden");
            System.in.read();
        }
        return configTemp;
    }
   
    private static Config InitConfiguration(String xmlFileAsString, boolean notNeeded) throws IOException
    {
        Config configTemp = new Config();
        try
        {
            FileInputStream fis = new FileInputStream(xmlFileAsString);
            BufferedInputStream bis = new BufferedInputStream(fis);
            XMLDecoder xmlDecoder = new XMLDecoder(bis);
            configTemp = (Config) xmlDecoder.readObject();
            xmlDecoder.close();
        }
        catch (Exception e)
        {
            System.err.println(e.getMessage());
            System.out.println("Beliebige Taste drücken, um das Programm zu beenden");
            System.in.read();
        }
        return configTemp;
    }
   
    private static Config InitConfiguration(InputStream bis) throws IOException
    {
        Config configTemp = new Config();
        try
        {
            XMLDecoder xmlDecoder = new XMLDecoder(bis);
            configTemp = (Config) xmlDecoder.readObject();
            xmlDecoder.close();
        }
        catch (Exception e)
        {
            System.err.println(e.getMessage());
            System.out.println("Beliebige Taste drücken, um das Programm zu beenden");
            System.in.read();
        }
        return configTemp;
    }
}

Klasse Config:
package SSHServerRestartPackage;

import java.io.Serializable;

public class Config implements Serializable
{
    private static final long serialVersionUID = 1L;
    private String serverName;
    private int serverPort;
    private String user;
    private String password;
   
    public String getServerName()
    {
        return serverName;
    }
    public void setServerName(String serverName)
    {
        this.serverName = serverName;
    }
    public int getServerPort()
    {
        return serverPort;
    }
    public void setServerPort(int serverPort)
    {
        this.serverPort = serverPort;
    }
    public String getUser()
    {
        return user;
    }
    public void setUser(String user)
    {
        this.user = user;
    }
    public String getPassword()
    {
        return password;
    }
    public void setPassword(String password)
    {
        this.password = password;
    }
}

XML-Datei:
<?xml version="1.0" encoding="UTF-8" ?>
<java version="1.8.0_20" class="SSHServerRestartPackage.SSHServerRestart">
    <object class="SSHServerRestartPackage.Config">
        <void property="serverName">
            <string>202.202.202.202</string>
        </void>
        <void property="serverPort">
            <int>22</int>
        </void>
        <void property="user">
            <string>root</string>
        </void>
        <void property="password">
            <string>IhrPasswort</string>
        </void>
    </object>
</java>

Creating a .jar file in Eclipse

Java-Die Konsole auf Benutzereingabe warten lassen

Java-Aktuelles Arbeitsverzeichnis auslesen


URL location = Test.class.getProtectionDomain().getCodeSource().getLocation();
String locationAsString = location.getPath();