设为首页 加入收藏

TOP

Java operate file or system between different service
2014-11-24 02:31:14 】 浏览:3197
Tags:Java operate file system between different service

设想:能不能在不同服务器之间文件传输,或是执行操作系统的命令的方式来操作服务器?
答案:当然可以

首先,在这里介绍一下不用密码怎么去访问别的service。(这是后续操作的基础)


要让 HostB 允许HostA 上的用户User1 进行操作,需要:

1. HostA 上以 User1 登陆,或 su - User1
2. 用ssh-keygen 命令,来生成HostA 的密钥对文件
ssh-keygen -t rsa
生成目录:/home/User1/.ssh/
id_rsa 是私钥文件
id_rsa.pub 是公钥文件
3. 修改公钥文件属性
chmod 755 /home/User1/.ssh/id_rsa.pub
4. 将 HostA 上的公钥内容 id_rsa.pub 添加到 HostB 上
如果HostB上没有 /home/User1/.ssh 目录或authorized_keys 则需要新建
将HostA 的 id_rsa.pub 文件内容,添加到 /home/User1/.ssh/authorized_keys 文件中
5. 测试:(注意需要以 User1 登陆)
scp 1.txt UserB@HostB:/****/xxxx/

在不需要密码的情况下能把1.txt文件从HostA copy 至HostB,那么,该配置设置ok。


其次,网上有很多java实现的ssh,比如jsch等。我们在这里介绍两种底层的操作,更加简明、高效

1. Runtime.getRuntime().exec()

我想大家对这个不陌生吧,Runtime这个东西很强大,只要是你的操作系统能够完成的,它都能完成。比如linux系统中我们常用的scp命令,跨服务操作
Runtime.getRuntime().exec("scp -r /###/dir user@HostB:/dir") ;这样就可以把你的服务器上的文件copy至HostB上。强大吧,当然该功能需要借助于上述说的公钥文件的配置。至于采用scp来copy file和directory的具体参数就不多说了。


2. ganymed-ssh2-build210.jar包提供了很多从方法
(API:http://www.ganymed.ethz.ch/ssh2/javadoc/index-all.html#_R_)它的sess.execCommand(command) ;方法依旧能完成上述scp的功能。

这两者的共同之处在于它们都是在执行操作系统底层的东西,简洁、高效、非常强大。不仅仅是我在上面介绍的scp的功能,比如删除目录以及该目录下所有的目录&文件呢?rm -rf /###/drectory ......

哈哈,大家也许看明白了,只要是你的操作系统所能执行的命令,这里都可以帮你完成,要让我用一句话评价,那就是:强大!

作者“zzhangyongjie”

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JSON字符串格式化 下一篇web应用dao层的开发经验小结

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目