Java程序调用ssh, scp, sftp
为什么80%的码农都做不了架构师?>>>
在java里可以通过Ganymed SSH-2, Expect4j等实现ssh登录,由于Ganymed SSH-2是纯java实现,并且可以实现scp,sftp等,因此我们采用Ganymed SSH-2
1> 下载安装
从http://code.google.com/p/ganymed-ssh-2/下载,我们用的是ganymed-ssh2-build251beta1.zip。
在eclipse里新建一个测试工程,并将解压后的ganymed-ssh2-build251beta1.jar拷到工程的lib目录下,然后在工程属性的java build path里添加这个jar的library。
2> ssh
将解压后的examples目录下的Basic.java 拷到工程的src目录,编译运行以后可以在控制台看到输出结果。除了执行一条命令,也可以执行一个shell脚本。
例如将Basic.java中的“uname -a && date && uptime && who” 改为“/home/lss/test.sh”, test.sh的内容如下:
#! /bin/sh
echo "testing shell";
ls;
在eclipse里运行以后的结果为:
Here is some information about the remote host:
testing shell
1
test.sh
ExitCode: 0
需要注意的是在一个session里只能执行一次命令,因此如果想在server上执行多个命令,要么打开多个session,要么在一个session里去执行一个shell脚本,shell脚本里去执行多个命令。
每次执行完以后,如果正确将返回ExitCode: 0,因此程序里可以通过sess.getExitStatus()来判断命令是否被正确执行。
3> scp
首先在程序里import ch.ethz.ssh2.SCPClient;
然后通过下面的方法来实现:
SCPClient scpClient = conn.createSCPClient();
scpClient.put("localFiles", "remoteDirectory"); //从本地复制文件到远程目录
scpClient.get("remoteFiles","localDirectory"); //从远程获取文件
例如:
scpClient.put("D:\\localTest.txt", "/home/bill/"); 需要注意的是windows的本地目录要用双斜杠来分隔目录。
scpClient.put("/home/bill/remoteTest.txt", "D:\\");
4> sftp
首先在程序里import ch.ethz.ssh2.SFTPv3Client;
SFTPv3Client sftpClient = new SFTPv3Client(conn);
sftpClient.mkdir("newRemoteDir", 0755); //远程新建目录 ,第二个参数是创建的文件夹的读写权限
sftpClient.rmdir("oldRemoteDir"); //远程删除目录
另外还有创建删除文件,读写文件等接口,参见http://www.ganymed.ethz.ch/ssh2/javadoc/ch/ethz/ssh2/SFTPv3Client.html
转载于:https://my.oschina.net/ctojp/blog/145626
Java程序调用ssh, scp, sftp相关推荐
- java 采集rtsp_通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口步骤概览
RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访问视频监控,也可以通过调用二次开发接口进行二次开发或者集成.下面介绍下Java程序调用Easy ...
- java调用easyxml接口_【技术教程】如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口?...
原标题:[技术教程]如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口? RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访 ...
- java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)
oracle中procedure是不能有返回值的,要想返回值,就得有输出参数,同样要想返回记录集,可以把游标类型作为输出参数. 下面是详细情况说明: 一:无返回值的存储过程调用 存储过程: creat ...
- java程序调用时的调用规则,Java程序调用ILog规则出错
Java程序调用ILog规则出错 各位大虾,想请教各位一个问题,was调用ILog,WAS应用和ILog规则部署在不同的机器上. 报错信息如下: [5/9/11 20:29:55:460 GMT+08 ...
- Java程序调用MATLAB接口
Java程序调用MATLAB接口 文章目录 Java程序调用MATLAB接口 一.注意事项 二.环境安装 三.MATLAB如何生成JAR包 四.MATLAB生成的JAR包如何引入到Java程序中 五. ...
- java如何接入实时流_【技术教程】如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口?...
RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访问视频监控,也可以通过调用二次开发接口进行二次开发或者集成.下面介绍下Java程序调用Easy ...
- Java程序调用c语言程序
Java程序调用自定义c语言程序 计算机中有很多的编程语言,各有各的特色和应用范围.Java混合编程就是Java程序和其它应用程序进行通讯和数据交互,比如我们都知道c语言的计算性能要比Java的略好一 ...
- SSH,SCP,SFTP命令汇总
ssh远程连接总结: 1:直接连接到远程主机上面,-p22代表ssh端口 root代表远程主机的用户名@172.16.1.31代表远程主机的IP地址.(直接切到远程主机上) [root@m01 ~]# ...
- 关于Java程序调用Lotus Notes邮件服务发送邮件的实现(一思路)
关于Lotus Notes Lotus Notes/Domino 是企业级通讯.协同工作及Internet/Intranet平台:内含强大的电子邮件功能,应用于企业办公自动化. Lotus Notes ...
最新文章
- 使用Python+OpenCV+dlib为人脸生成口罩
- 算法 n个数字形成的圆圈中循环删除第m个数字 C++
- Android视频压缩并且上传
- python中可变参数args_python 可变参数 *args, **kwds
- window7连接其他计算机的打印机,win7系统电脑怎样连接其它电脑上在打印机?
- Python:递归输出斐波那契数列
- 企业为什么要做SEO,它的重要性有哪些?
- jQuery实现动态地获取系统时间
- js中prototype用法(转)
- 【Level 08】U07 Mixed Feelings L1 Day trip
- MIT6.830 lab6 Rollback and Recovery 实验报告
- vue添加弹出框数据绑定
- eclipse中maven项目pom文件第一行报错解决方法
- node js npm grunt安装,elasticsearch-head 5.X安装
- 计算机通信发展史,通信技术发展史
- 解析损失函数、代价函数、目标函数
- VC编程--玩转控件(Windows编程简介)
- 傅里叶变换复数形式的实部代表什么_复数形式傅里叶变换的物理意义中,相位究竟指的是什么?...
- 关于战棋对战化的设想和实现
- C/C++面试高频知识点八股文