java程序里实现ssh, scp, sftp
来源:互联网 发布:java手游服务器框架 编辑:程序博客网 时间:2024/05/16 16:11
在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
- java程序里实现ssh, scp, sftp
- java程序里实现ssh, scp, sftp
- java程序里实现ssh, scp, sftp
- ssh scp sftp
- SSH、SCP和SFTP教程
- openssh(scp、sftp、slogin、ssh)
- FTP SFTP SCP OpenSSL SSH
- ftp、sftp、scp、ssh、openssh
- ftp、sftp、scp、ssh、openssh
- ftp、sftp、scp、ssh、openssh
- Telnet、FTP、SSH、SFTP、SCP
- SSH软件包:Sftp,scp和ssh-agent
- SSH软件包:Sftp,scp和ssh-agent
- Java中实现SSH2/SCP/SFTP/FTP操作
- Linux Command Tips:sftp, scp, ssh
- 使ssh scp sftp不用输入密码
- Telnet、FTP、SSH、SFTP、SCP[zz]
- Linux下Telnet、FTP、SSH、SFTP、SCP
- Python学习总结(4)-数据结构
- JUnit中Runner的使用
- Swift - 如何让应用支持IPv6-only网络(附:搭建IPv6测试环境)
- Android两种播放声音的方式
- C# 连接 Oracle 的几种方式
- java程序里实现ssh, scp, sftp
- 追忆似水童年
- 在Java中如何遍历Map对象
- 每个人应该知道的NVelocity用法
- 非递归创建二叉树&非递归访问二叉树
- [Android开发] 使用okhttp下载文件(带监听)
- lca Tarjan学习笔记
- 用快捷键和提示来提高你用 Sublime Text 的生产力
- servlet2016