java scp传输文件

java scp传输文件<dependency><groupId>ch.ethz.ganymed</groupId><artifactId>ganymed-ssh2</artifactId><version>build210</version></dependency&a

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 <dependency>
     <groupId>ch.ethz.ganymed</groupId>  
    <artifactId>ganymed-ssh2</artifactId>  
    <version>build210</version>  
  </dependency>



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

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.SFTPException;
import ch.ethz.ssh2.SFTPv3Client;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;


public class SCPUtil {

	 
	public static final String LOCALPATH = "";
	
	public static final String REMOTEFILEPATH = "";

	public static final String REMOTEIP = "";

	public static final String USERNAME = "";

	public static final String PASSWORD = "";

	/**
	 * 远程文件传输,如果local参数是文件,则本地传输到远程;如果是目录,则远程传输到本地
	 * 
	 * @param remoteIp
	 *            远程主机IP或hostname
	 * @param user
	 *            远程主机用户名
	 * @param password
	 *            远程主机对应密码
	 * @param local
	 *            本地主机文件名(本地->远程);本地主机目录名(远程->本地)
	 * @param remote
	 *            远程主机目录名(本地->远程);远程主机文件名(远程->本地)
	 * @return 返回true:成功。false:失败
	 */
	public static boolean scpFile(String remoteIp, String user,
			String password, String local, String remote) {
		Connection con = new Connection(remoteIp);
		try {
			con.connect();
			boolean isAuthed = con.authenticateWithPassword(user, password);

			if (!isAuthed) {
				//logger.error("远程主机" + remoteIp + "用户名或密码验证失败!");
				return false;
			}

			SCPClient scpClient = con.createSCPClient();
			File localFile = new File(local);
			if (localFile.isFile()) {
				if (!localFile.exists()) {
					//logger.error("本地文件" + local + "不存在,无法传输!");
					return false;
				} else {
					try {
						SFTPv3Client sftpClient = new SFTPv3Client(con);
						// 远程新建目录
						sftpClient.mkdir(remote, 0777);
					} catch (SFTPException e1) {
					//	logger.info("目录" + remote + "已存在,无需再创建。");
					}

					try {
						scpClient.put(local, remote, "0777");
					} catch (IOException e2) {
						//logger.error("路径" + remote + "不是一个文件夹。");
						return true;
					}

					// 上传到远程主机上的文件
					String filename = local
							.substring(local.lastIndexOf('/') + 1);
					Session session = con.openSession();
					session.execCommand("ls -l " + remote + "/" + filename);
					InputStream is = new StreamGobbler(session.getStdout());
					BufferedReader br = new BufferedReader(
							new InputStreamReader(is));
					String line = br.readLine();
					br.close();
					is.close();
					session.close();
					if (!StringUtils.isEmpty(line)) {
						return true;
					}
				}
			} else {
				if (!localFile.exists()) {
					localFile.mkdirs();
				}

				scpClient.get(remote, local);

				String filename = remote.substring(remote.lastIndexOf('/') + 1);
				if (new File(local + "/" + filename).exists()) {
					return true;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

		con.close();
		return false;
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171994.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c++入门教程–-2基本语法

    c++入门教程–-2基本语法

    2021年3月12日
    103
  • 基于tensorflow的LSTM 时间序列预测模型

    时间序列预测(曲线回归或曲线拟合),结构为训练数据生成-》隐藏输入层-》LSTM神经层-》隐藏输入层-》结果,也可以采用LSTM神经层-》全连接层(多层的普通神经网络)构成,训练效果未对比,与参数调优相关。参数说明:TIME_STEPS:RNN训练的步数,一次训练输入的序列长度;INPUT_SIZE:输入序列中,单个输入的维度,用于曲线拟合或者回归的话,维度即为1;BATCH_SIZE:训练的批…

    2022年4月9日
    40
  • Visio 2010工具产品密钥

    Visio 2010工具产品密钥最近需要安装Visio2010来进行画图工作的需要,因此在网上找了好长时间的产品密钥,这是我亲测之后觉得有效的,大家可以根据我下面的这些产品密钥来激活Visio2010。具体的密钥如下:GR24B-GC2XY-KRXRG-2TRJJ-4X7DCVWQ6G-37WBG-J7DJP-CY66Y-V278X2T8H8-JPW3D-CJGRK-3HTVF-VWD83HMCVF-BX8YB-…

    2022年6月1日
    48
  • discuz搬家。

    discuz搬家。discuz转移时要记得数据库名也要修改。。。。。 discuz搬家时confing文件夹4个文件数据库连接都要改对应4处。/bbs/config/config_global.php、config_global_default.php、config_ucenter.php、config_ucenter_default.php而且有一个文件要改5处。即:config_ucenter.ph

    2022年7月17日
    11
  • blender2.9教程_赖世雄入门篇

    blender2.9教程_赖世雄入门篇Blender2.8基础(一)基础操作与常用快捷键▶Ctrl+N:创建新工程一、视图操作1、放大视图▶视图最大化显示:Ctrl+空格(左键点击视图任意地方可以选择视图,然后按Ctrl+空格可以最大化显示视图。)▶切换全屏模式:Ctrl+Alt+空格2、切换视图▶切换视图:Alt(按住不放)+按住中键上下或左右移动鼠标(每切换一次视图就必须重新按一下中键并移动鼠标)▶……

    2022年8月10日
    7
  • 哈佛的幸福课笔记

    哈佛的幸福课笔记觉得对本人而言有新信息的是第四课和第六课。第八课关于感恩,很好!(Tal和外婆的真实的故事,感人,几次热泪盈眶)。第10课关于改变当然很有用。第12、13课讨论关于建立自我和谐的目标和应对压力问题。哈佛的幸福课 http://v.163.com/special/positivepsychology/ (提醒:每课一个半小时) 第一课什么是积极心理学笔记:(简介)1、解读比

    2022年7月25日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号