Java‎ > ‎

JSch


Java SSH remote command execution example using JCraft's JSch (http://www.jcraft.com/jsch/)

package info.compute.example;

import java.io.InputStream;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;


public class SSHExec {   
    public static void main(String[] args) {

                String cmd = "uptime";
        String host = "10.0.0.2";
                int port = 22;
                String user = "root";
                String sshkey = "c:/ssh/id_rsa";
               
        try {
            JSch jsch = new JSch();
            jsch.addIdentity(sshkey);
            Session session=jsch.getSession(user, host, port);
            java.util.Properties config = new java.util.Properties();
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);
            session.connect();
            Channel channel = session.openChannel("exec");
           
            ((ChannelExec)channel).setCommand(cmd);
            channel.setInputStream(null);
            ((ChannelExec)channel).setErrStream(System.err);       
            InputStream in=channel.getInputStream();
           
            channel.connect();
           
            byte[] tmp=new byte[1024];
            while(true){
                while(in.available()>0){
                int i=in.read(tmp, 0, 1024);
                if(i<0)break;
                System.out.print(new String(tmp, 0, i));
                }
                if(channel.isClosed()){
                    System.out.println("exit-status: "+channel.getExitStatus());
                    break;
                }
                try{Thread.sleep(1000);}catch(Exception ee){}
            }
            channel.disconnect();
            session.disconnect();
        }   
        catch(Exception e) {e.printStackTrace();}
    }
}