为什么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相关推荐

  1. java 采集rtsp_通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口步骤概览

    RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访问视频监控,也可以通过调用二次开发接口进行二次开发或者集成.下面介绍下Java程序调用Easy ...

  2. java调用easyxml接口_【技术教程】如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口?...

    原标题:[技术教程]如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口? RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访 ...

  3. java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)

    oracle中procedure是不能有返回值的,要想返回值,就得有输出参数,同样要想返回记录集,可以把游标类型作为输出参数. 下面是详细情况说明: 一:无返回值的存储过程调用 存储过程: creat ...

  4. java程序调用时的调用规则,Java程序调用ILog规则出错

    Java程序调用ILog规则出错 各位大虾,想请教各位一个问题,was调用ILog,WAS应用和ILog规则部署在不同的机器上. 报错信息如下: [5/9/11 20:29:55:460 GMT+08 ...

  5. Java程序调用MATLAB接口

    Java程序调用MATLAB接口 文章目录 Java程序调用MATLAB接口 一.注意事项 二.环境安装 三.MATLAB如何生成JAR包 四.MATLAB生成的JAR包如何引入到Java程序中 五. ...

  6. java如何接入实时流_【技术教程】如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口?...

    RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访问视频监控,也可以通过调用二次开发接口进行二次开发或者集成.下面介绍下Java程序调用Easy ...

  7. Java程序调用c语言程序

    Java程序调用自定义c语言程序 计算机中有很多的编程语言,各有各的特色和应用范围.Java混合编程就是Java程序和其它应用程序进行通讯和数据交互,比如我们都知道c语言的计算性能要比Java的略好一 ...

  8. SSH,SCP,SFTP命令汇总

    ssh远程连接总结: 1:直接连接到远程主机上面,-p22代表ssh端口 root代表远程主机的用户名@172.16.1.31代表远程主机的IP地址.(直接切到远程主机上) [root@m01 ~]# ...

  9. 关于Java程序调用Lotus Notes邮件服务发送邮件的实现(一思路)

    关于Lotus Notes Lotus Notes/Domino 是企业级通讯.协同工作及Internet/Intranet平台:内含强大的电子邮件功能,应用于企业办公自动化. Lotus Notes ...

最新文章

  1. 使用Python+OpenCV+dlib为人脸生成口罩
  2. 算法 n个数字形成的圆圈中循环删除第m个数字 C++
  3. Android视频压缩并且上传
  4. python中可变参数args_python 可变参数 *args, **kwds
  5. window7连接其他计算机的打印机,win7系统电脑怎样连接其它电脑上在打印机?
  6. Python:递归输出斐波那契数列
  7. 企业为什么要做SEO,它的重要性有哪些?
  8. jQuery实现动态地获取系统时间
  9. js中prototype用法(转)
  10. 【Level 08】U07 Mixed Feelings L1 Day trip
  11. MIT6.830 lab6 Rollback and Recovery 实验报告
  12. vue添加弹出框数据绑定
  13. eclipse中maven项目pom文件第一行报错解决方法
  14. node js npm grunt安装,elasticsearch-head 5.X安装
  15. 计算机通信发展史,通信技术发展史
  16. 解析损失函数、代价函数、目标函数
  17. VC编程--玩转控件(Windows编程简介)
  18. 傅里叶变换复数形式的实部代表什么_复数形式傅里叶变换的物理意义中,相位究竟指的是什么?...
  19. 关于战棋对战化的设想和实现
  20. C/C++面试高频知识点八股文

热门文章

  1. Cisco WLAN 控制器的配置
  2. 通过btrace排查线上频繁Full GC的case
  3. nexus搭建maven私服
  4. React之渲染元素
  5. 《迷人的8051单片机》----3.4 程序
  6. 【看完请推荐】记国庆前的一次码农受骗记
  7. Windows Phone 8 蓝牙标准
  8. apache用proxy 实现URL 转发
  9. eclipse修改文件代码不起作用,输出时还是老的,估计是缓存问题
  10. 20181113-3 Beta阶段贡献分配规则