linux虚拟机下载文件命令,java代码如何连接Linux虚拟机,还有文件上传下载,等基础命令-Go语言中文社区...

这里基于Hutool包下封装的工具类,对Linux连接,还有基本命令操作演示

一、工具包代码示例

此处是源代码的一部分,,完整代码在Github上

/**

* Jsch工具类

* Jsch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。

* 它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等。

*/

public class JschUtil {

/** 不使用SSH的值 */

public final static String SSH_NONE = "none";

/** 本地端口生成器 */

private static final LocalPortGenerater portGenerater = new LocalPortGenerater(10000);

/**

* 生成一个本地端口,用于远程端口映射

* @return 未被使用的本地端口

*/

public static int generateLocalPort() {

return portGenerater.generate();

}

/**

* 获得一个SSH会话,重用已经使用的会话

* @param sshHost 主机

* @param sshPort 端口

* @param sshUser 用户名

* @param sshPass 密码

* @return SSH会话

*/

public static Session getSession(String sshHost, int sshPort, String sshUser, String sshPass) {

return JschSessionPool.INSTANCE.getSession(sshHost, sshPort, sshUser, sshPass);

}

/**

* 打开一个新的SSH会话

*

* @param sshHost 主机

* @param sshPort 端口

* @param sshUser 用户名

* @param sshPass 密码

* @return SSH会话

*/

public static Session openSession(String sshHost, int sshPort, String sshUser, String sshPass) {

final Session session = createSession(sshHost, sshPort, sshUser, sshPass);

try {

session.connect();

} catch (JSchException e) {

throw new JschRuntimeException(e);

}

return session;

}

/**

* 新建一个新的SSH会话

*

* @param sshHost 主机

* @param sshPort 端口

* @param sshUser 机用户名

* @param sshPass 密码

* @return SSH会话

* @since 4.5.2

*/

public static Session createSession(String sshHost, int sshPort, String sshUser, String sshPass) {

if (StrUtil.isEmpty(sshHost) || sshPort < 0 || StrUtil.isEmpty(sshUser) || StrUtil.isEmpty(sshPass)) {

return null;

}

Session session;

try {

session = new JSch().getSession(sshUser, sshHost, sshPort);

session.setPassword(sshPass);

// 设置第一次登陆的时候提示,可选值:(ask | yes | no)

session.setConfig("StrictHostKeyChecking", "no");

} catch (JSchException e) {

throw new JschRuntimeException(e);

}

return session;

}

}

二、Java测试连接,操作代码

2.1 建立连接

public class JschUtilTest {

@Test

@Ignore

public void bindPortTest() {

//新建会话,此会话用于ssh连接到跳板机(堡垒机),此处为xx.xx.xx.xx(IP)

Session session = JschUtil.getSession("xx.xx.xx.xx", 22, "xxx", "xxx"); // 这里的IP,端口,用户名和密码需要自己指定

System.out.println(session.getUserName());

System.out.println(session.getPort());

}

}

运行测试,就会在控制台打印用户名和端口信息,说明已经成功建立连接了

2.1 ls 查看目录操作

代码示例

@Test

@Ignore

public void sftpTest() {

Session session = JschUtil.getSession("xxxx.xx.xx.xx", 22, "username", "password");

Sftp sftp = JschUtil.createSftp(session);

List ls = sftp.ls("/opt");

ls.forEach(System.out::println);

}

结果比较

d620312d0da14ec83c770ac1bc889529.png

2.2 删除命令

@Test

@Ignore

public void sftpTest2() {

Session session = JschUtil.getSession("xxxx.xx.xx.xx", 22, "username", "password");

Sftp sftp = JschUtil.createSftp(session);

boolean b = sftp.delDir("/opt/test/test");

System.out.println(b);

}

2.3 新建文件夹

@Test

@Ignore

public void sftpTest3() {

Session session = JschUtil.getSession("xxxx.xx.xx.xx", 22, "username", "password");

Sftp sftp = JschUtil.createSftp(session);

boolean b = sftp.mkdir("/opt/test/test2");

System.out.println(b);

}

2.4 文件上传( Windows --> Linux )

@Test

@Ignore

public void sftpTest4() {

Session session = JschUtil.getSession("xxxx.xx.xx.xx", 22, "username", "password");

Sftp sftp = JschUtil.createSftp(session);

Sftp put = sftp.put("D:\tmp\a.txt", "/opt/test/as.txt");

}

2.4 文件下载

@Test

@Ignore

public void sftpTest5() {

Session session = JschUtil.getSession("xxxx.xx.xx.xx", 22, "username", "password");

Sftp sftp = JschUtil.createSftp(session);

sftp.download("/opt/test/as.txt", FileUtil.file("D:\tmp\b.txt"));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值