通过Java将另一台电脑的文件压缩,然后复制回本地电脑

HelloWorlddd 发布于 2016/08/01 10:00
阅读 1K+
收藏 0
声明这个问题是对我上一个问题的修正,我觉得可能我并没有表达清楚我的情况,所以另起一问
 
首先情况是现在有两台Linux电脑,本地的称为Computer1,远程的称为Computer2,现在我需要将Computer2的文件复制回Computer1。

公司旧方案,采用如下shell脚本的方式
1,通过scp远程复制Computer1上的脚本到Computer2,此脚本主要功能是将文件夹A压缩到文件夹B,写log,创建文件夹,复制的工作
2,通过ssh远程执行刚才复制过去的脚本
3,通过scp将步骤2脚本处理之后的压缩文件以及log等,远程复制回Computer1
4,通过ssh远程操作,删除步骤2复制过去的脚本

可以看到这个方案采用了ssh协议的方式,实际上还是客户-服务模式,Computer2启动ssh服务端,然后本地电脑作为ssh客户端,完成通信
ssh的含义有点多,这里归纳下:1,代表ssh协议;2,代表SSH服务端/客户端;3,代表shell中的命令
 
现在我打算用Java来实现上面的过程,我可以利用Socket编程,通过TCP/IP协议实现了两条电脑的通信,现在问题是,Socket编程也是客户-服务模式,首先需要在Computer2上安装服务端程序,使其运行处于监听状态,Computer1发出请求才能连接

问题就出在需要在Computer2上安装服务端程序,采用ssh的方式因为Computer2已经启用了ssh服务,所以不需要另行安装服务端,直接通过shell就能远程复制,远程执行,强大的shell,但是我自己用Java写服务端就需要安装服务端
可能有朋友觉得不就是安装个服务端嘛,拷过去或者上传网上,然后让Computer2下载安装不就好了,好吧,我承认我的情况比较特殊,Computer2代表了很多公司内部电脑,而且权限重重,虽然我有所有电脑的账号密码,管理员权限,但是到现场也还是挺麻烦,以及给所有电脑手动安装服务端跟新什么的也很麻烦
 
总之,我现在希望通过Java将Computer2的文件压缩,然后复制回本地电脑,我该如何部署我的Java程序呢

下面是我的一个设想,
1,通过scp将.class文件复制到远程机,通过ssh执行.class文件(或者是.jar文件)
2,.class文件运行之后,远程机就处于监听状态了
3,然后我就可以通过本地客户端用Socket通过IP,Port发出请求

但是我觉得有点多此一举的感觉,我既然都可以用scp远程复制,ssh远程执行,实现远程连线了,又何必用Java通过Socket连线呢

好吧我承认,我需要帮助

 
加载中
1
koukou890
koukou890

话说 有个jar包 可以调用scp 来达到你的需求

http://www.ganymed.ethz.ch/ssh2/

0
J
JCod3r
直接用java代码SSH连接过去不就行了   没必要写什么Socket吧
0
cys1357
cys1357
在java中执行脚本你的shell脚本是是否满足你的需求,感觉你没有描述清除你到底想做什么
0
HelloWorlddd
HelloWorlddd

引用来自“JCod3r”的评论

直接用java代码SSH连接过去不就行了   没必要写什么Socket吧
因为连过去之后还需要在远程机上面执行一些操作,比如创建文件夹,压缩等,最后还需要将结果传回本地电脑,我觉得用Java写会比shell脚本容易一点,shell我不熟。。
方案一:正如上面的公司老方式,全部用shell写,
方案二:正如上面我的设想,先用shell将java代码传过去,然后执行java代码实现Socket连线,之后就全部给java处理,以及数据传输,shell只起个开头的作用
方案三:先用shell将java代码传过去,然后java只负责处理,最后shell将结果返回,也就说shell负责远程数据传输,java负责具体执行任务
0
J
JCod3r

引用来自“JCod3r”的评论

直接用java代码SSH连接过去不就行了   没必要写什么Socket吧

引用来自“HelloWorlddd”的评论

因为连过去之后还需要在远程机上面执行一些操作,比如创建文件夹,压缩等,最后还需要将结果传回本地电脑,我觉得用Java写会比shell脚本容易一点,shell我不熟。。
方案一:正如上面的公司老方式,全部用shell写,
方案二:正如上面我的设想,先用shell将java代码传过去,然后执行java代码实现Socket连线,之后就全部给java处理,以及数据传输,shell只起个开头的作用
方案三:先用shell将java代码传过去,然后java只负责处理,最后shell将结果返回,也就说shell负责远程数据传输,java负责具体执行任务
简单的linux命令你应该会吧  http://www.tuicool.com/articles/UBJrYn  参考这个   你的需求没那么复杂  无非就是把shell换成java代码
0
抢小孩糖吃
抢小孩糖吃

Jsch能够给满足你的需求,服务端开启ssh即可

http://www.jcraft.com/jsch/

0
沧海_Sea
沧海_Sea

这时候我只能说python大法好  Java也有实现ssh协议的jar包  直接用就好了


0
天王盖地虎
天王盖地虎

使用jsch连接第二台电脑:http://www.jcraft.com/jsch/examples/

jsch是一个SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器

直接连接到服务器,执行压缩拷贝命令即可。


0
ArrayListt
ArrayListt

你可以直接写一个类是一句话木马之类的网页,然后来实现。这样应该比较简单粗暴。


返回顶部
顶部