Java中com.jcraft.jsch.JSch讲解

JSch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。要使用JSch,需要下载它的jar包,请从官网下载它:http://www.jcraft.com/jsch/

一个简单的jsch链接Linux并执行命令的utils。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

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



public class ShellUtils {
    private static JSch jsch;
    private static Session session;

    
    /**
     * 连接到指定的IP
     *
     * @throws JSchException
     */
    public static void connect(String user, String passwd, String host) throws JSchException {
        jsch = new JSch();
        session = jsch.getSession(user, host, 22);
        session.setPassword(passwd);
        
        java.util.Properties config = new java.util.Properties();
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);
        
        session.connect();
    }

    /**
     * 执行相关的命令
     * @throws JSchException
     */
    public static void execCmd(String command, String user, String passwd, String host) throws JSchException {
        connect(user, passwd, host);
        
        BufferedReader reader = null;
        Channel channel = null;

        try {
            while (command != null) {
                channel = session.openChannel("exec");
                ((ChannelExec) channel).setCommand(command);
                
                channel.setInputStream(null);
                ((ChannelExec) channel).setErrStream(System.err);

                channel.connect();
                InputStream in = channel.getInputStream();
                reader = new BufferedReader(new InputStreamReader(in));
                String buf = null;
                while ((buf = reader.readLine()) != null) {
                    System.out.println(buf);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSchException e) {
            e.printStackTrace();
        } finally {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            channel.disconnect();
            session.disconnect();
        }
    }
   
}




com.jcraft.jsch.RequestShell.class com.jcraft.jsch.RequestAgentForwarding.class com.jcraft.jsch.Random.class com.jcraft.jsch.RequestSignal.class com.jcraft.jsch.Compression.class com.jcraft.jsch.SignatureDSA.class com.jcraft.jsch.Logger.class com.jcraft.jsch.RequestEnv.class com.jcraft.jsch.UserAuthPublicKey.class com.jcraft.jsch.RequestX11.class com.jcraft.jsch.RequestSftp.class com.jcraft.jsch.Session.class com.jcraft.jsch.SignatureRSA.class com.jcraft.jsch.JSchAuthCancelException.class com.jcraft.jsch.Cipher.class com.jcraft.jsch.UserAuth.class com.jcraft.jsch.ChannelX11.class com.jcraft.jsch.RequestPtyReq.class com.jcraft.jsch.jce.HMACMD596.class com.jcraft.jsch.jce.Random.class com.jcraft.jsch.jce.SignatureDSA.class com.jcraft.jsch.jce.TripleDESCBC.class com.jcraft.jsch.jce.MD5.class com.jcraft.jsch.jce.SignatureRSA.class com.jcraft.jsch.jce.AES128CBC.class com.jcraft.jsch.jce.AES192CBC.class com.jcraft.jsch.jce.AES256CBC.class com.jcraft.jsch.jce.HMACSHA196.class com.jcraft.jsch.jce.SHA1.class com.jcraft.jsch.jce.HMACSHA1.class com.jcraft.jsch.jce.KeyPairGenRSA.class com.jcraft.jsch.jce.HMACMD5.class com.jcraft.jsch.jce.BlowfishCBC.class com.jcraft.jsch.jce.KeyPairGenDSA.class com.jcraft.jsch.jce.DH.class com.jcraft.jsch.DHGEX.class com.jcraft.jsch.jcraft.HMACMD596.class com.jcraft.jsch.jcraft.Compression.class com.jcraft.jsch.jcraft.HMACSHA196.class com.jcraft.jsch.jcraft.HMACSHA1.class com.jcraft.jsch.jcraft.HMACMD5.class com.jcraft.jsch.jcraft.HMAC.class com.jcraft.jsch.HostKeyRepository.class com.jcraft.jsch.JSch.class com.jcraft.jsch.MAC.class com.jcraft.jsch.Request.class com.jcraft.jsch.ChannelAgentForwarding.class com.jcraft.jsch.UserAuthGSSAPIWithMIC.class com.jcraft.jsch.Channel.class com.jcraft.jsch.ForwardedTCPIPDaemon.class com.jcraft.jsch.SftpProgressMonitor.class com.jcraft.jsch.UserAuthKeyboardInteractive.class com.jcraft.jsch.ChannelExec.class com.jcraft.jsch.SocketFactory.class com.jcraft.jsch.ProxySOCKS5.class com.jcraft.jsch.Buffer.class com.jcraft.jsch.ProxyHTTP.class com.jcraft.jsch.GSSContext.class com.jcraft.jsch.IO.class com.jcraft.jsch.Identity.class com.jcraft.jsch.JSchException.class com.jcraft.jsch.CipherNone.class com.jcraft.jsch.SftpATTRS.class com.jcraft.jsch.KeyPairRSA.class com.jcraft.jsch.Packet.class com.jcraft.jsch.RequestExec.class com.jcraft.jsch.KeyPairGenRSA.class com.jcraft.jsch.ChannelShell.class com.jcraft.jsch.IdentityFile.class com.jcraft.jsch.RequestSubsystem.class com.jcraft.jsch.Proxy.class com.jcraft.jsch.KnownHosts.class com.jcraft.jsch.RequestWindowChange.class com.jcraft.jsch.ChannelSubsystem.class com.jcraft.jsch.HASH.class com.jcraft.jsch.KeyPairDSA.class com.jcraft.jsch.ChannelSftp.class com.jcraft.jsch.HostKey.class com.jcraft.jsch.KeyPairGenDSA.class com.jcraft.jsch.UserAuthNone.class com.jcraft.jsch.UserInfo.class com.jcraft.jsch.ServerSocketFactory.class com.jcraft.jsch.KeyPair.class com.jcraft.jsch.JSchPartialAuthException.class com.jcraft.jsch.DH.class com.jcraft.jsch.KeyExchange.class com.jcraft.jsch.ChannelDirectTCPIP.class com.jcraft.jsch.Util.class com.jcraft.jsch.SftpException.class com.jcraft.jsch.DHG1.class com.jcraft.jsch.ChannelForwardedTCPIP.class com.jcraft.jsch.ChannelSession.class com.jcraft.jsch.PortWatcher.class com.jcraft.jsch.ProxySOCKS4.class com.jcraft.jsch.UserAuthPassword.class com.jcraft.jsch.UIKeyboardInteractive.class
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值