jsch包操作笔记

通过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;
}

}

转载于:https://www.cnblogs.com/chaofaguan/p/8417580.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值