jsch包操作笔记

2018-06-18 03:28:36来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

通过jsch类包操作xshell

 

代码如下

package com;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

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

public class UploadWar {
public static void main(String[] args) {
String ftpHost = "";
int port = 22;
String ftpUserName = "";
String ftpPassword = "";

Session session;
try {
session = con(ftpHost, port, ftpUserName, ftpPassword);
String src = "H:\\test.png"; // 本地文件名
String dst = ""; // 待上传到xshell的文件路径
Upload(session, src, dst);

String cmd1 = "cd shell; sh deploy_ngcrmpfcore_nm.sh ";//执行的命令
Command(session, cmd1);

String win = "d:\\log\\";//本地路径
String linux = "";//xshell的文件路径
UploadWar.Download(session, linux, win);
} catch (JSchException | SftpException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* @param src
* Windows下的文件路径
* @param dst
* 需要上传到xshell的文件夹
* @throws JSchException
* @throws SftpException
*/
public static void Upload(Session session, String src, String dst) throws JSchException, SftpException {
Channel channel = session.openChannel("sftp"); // 打开SFTP通道
channel.connect(); // 建立SFTP通道的连接
// System.out.println("Connected successfully to ftpHost ")
((ChannelSftp) channel).put(src, dst);
}

/**
* @throws JSchException
* @throws SftpException
*/
public static void Download(Session session, String src, String dst) throws JSchException, SftpException {
Channel channel = session.openChannel("sftp"); // 打开SFTP通道
channel.connect(); // 建立SFTP通道的连接
// System.out.println("Connected successfully to ftpHost ")
((ChannelSftp) channel).get(src, dst);
}

/**
* @param cmd
* 脚本命令
* @throws JSchException
* @throws IOException
*/
public static List<String> Command(Session session, String cmd) throws JSchException, IOException {
List<String> l = new ArrayList<String>();
Channel channel2 = session.openChannel("exec");
ChannelExec execChannel = (ChannelExec) channel2;
execChannel.setCommand(cmd);
InputStream in = channel2.getInputStream();
channel2.connect();
StringBuffer sb = new StringBuffer();
int c = -1;
while ((c = in.read()) != -1) {
sb.append((char) c);
}
l.add(sb.toString());
in.close();
return l;
}

/**
* @param session
* 建立SFTP通道的连接
*
* @throws JSchException
*/
public static ChannelSftp getChannel(Session session) throws JSchException {

Channel channel = session.openChannel("sftp"); // 打开SFTP通道
channel.connect(); // 建立SFTP通道的连接
System.out.println("Connected successfully to ftpHost ");
return (ChannelSftp) channel;
}

/**
*
* @param ftpHost
* IP
* @param port
* 端口 22
* @param ftpUserName
* 用户名
* @param ftpPassword
* 用户密码
* @return session 用于登陆
* @throws JSchException
*
*/
public static Session con(String ftpHost, int port, String ftpUserName, String ftpPassword) throws JSchException {
JSch jsch = new JSch(); // 创建JSch对象
Session session = jsch.getSession(ftpUserName, ftpHost, port); // 根据用户名,主机ip,端口获取一个Session对象
System.out.println("Session created.");
if (ftpPassword != null) {
session.setPassword(ftpPassword); // 设置密码
}
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config); // 为Session对象设置properties
session.connect(); // 通过Session建立链接
session.openChannel("sftp");
return session;
}

}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:简要概述java内存模型,以及volatile关键字

下一篇:final关键字