使用ganymed ssh2实现scp以及ssh内容访问
来源:互联网 发布:网络专科学位证有用吗 编辑:程序博客网 时间:2024/05/22 15:01
使用ganymed ssh2实现scp以及ssh内容访问
(2012-12-19 14:57:07)转载▼
标签:
ganymed
ssh2
scp
java
ssh
it
分类: JavaGanymed SSH-2 for Java是一个开源的java代码实现ssh的
下载地址http://www.ganymed.ethz.ch/ssh2/
一,scp实现
主要使用put方法把本地的文件scp拷贝到远程机器,同理使用get方法把文件从远程机器拷贝到本地。
实现代码大致如下,主要分为6个步骤:
private void doSCP(String hostname, String user, String psw, String localPath, String remotePath) throws Exception {
//1, 创建一个连接connection对象
Connection conn = new Connection(hostname);
//2, 进行连接操作
conn.connect();
//3, 进行连接访问授权验证
boolean isAuth = conn.authenticateWithPassword(user, psw);
if(!isAuth)
throw new Exception("Authentication failed");
//4, 创建一个SCPClient对象
SCPClient client = new SCPClient(conn);
try {
for(int i = files.length - 1; i >= 0 ; i --) {
File cur = files[i];
String curname = cur.getName();
File rnm = null;
if(cur.exists()) {
String name = localPath + File.separatorChar + cur.getName() + ".scping";
rnm = new File(name);
cur.renameTo(rnm);
} else {
continue;
}
if((rnm != null) && rnm.exists()) {
String scplocal = localPath + File.separatorChar + rnm.getName();
//5, 进行文件scp远程拷贝
client.put(scplocal, curname, remotePath, "0777");
rnm.delete();
}
}
}
finally {
//6, 使用完关闭连接
conn.close();
}
}
二,ssh实现远程机器内容访问
由于任务特点,需要从本地win7系统先登录到A机器(linux系统),然后从A再登录到其他B,C,D等(均为linux系统),然后查看B,C,D等机器上的信息。
具体实现方式先使用该开源连接到机器A,然后调用语句"ssh hostip"等连接到B,C,D等机器。
实现代码大致如下:
public static void main(String[] args) throws Exception {
// 连接A机器
Connection conn = new Connection("192.168.0.101");
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword("root", "centos");
if(!isAuthenticated) {
throw new Exception("not authenticated");
}
Session sess = conn.openSession();
//下面两句话必须添加才能使用下面的out.write()方法
sess.requestDumbPTY();
sess.startShell();
InputStream in = sess.getStdout();
InputStream err = sess.getStderr();
OutputStream out = sess.getStdin();
// 用于输出信息的线程
Thread t1 = new MyStdIn(in);
Thread t2 = new MyStdIn(err);
t1.start();
t2.start();
// 连接B,C或D等机器
// 输入密码
sess.close();
conn.close();
}
===================================================
上述命令输出的内容:
Last login: Wed Dec 19 14:26:00 2012 from swbss-web-05
ssh 192.168.0.105
[root@swbss-web-05 ~]# ssh 192.168.0.105
root@192.168.0.105's password:
Last login: Wed Dec 19 14:26:06 2012 from 192.168.0.101
[root@swbss-ftp-007 ~]# cd /home/xyz/
[root@swbss-ftp-007 xyz]# ls
LogsImportSys.jar LogsImportSys.sh log nohup.out
[root@swbss-ftp-007 xyz]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/VolGroup-lv_root
tmpfs 16G 100K 16G 1% /dev/shm
/dev/sdb1 485M 37M 423M 8% /boot
/dev/mapper/VolGroup-lv_home
/dev/sda 5.4T 4.7T 410G 93% /mnt
[root@swbss-ftp-007 xyz]#
0 0
- 使用ganymed ssh2实现scp以及ssh内容访问
- ganymed-ssh2实现java ssh协议采集
- ganymed-ssh2实现java ssh协议采集
- java使用ganymed-ssh2-build210.jar实现linuxscp命令。
- ganymed-ssh2
- ch.ethz.ganymed包ganymed-ssh2的使用
- 【JAVA笔记】使用ganymed-ssh2-build210.jar访问Linux虚拟主机获取数据
- java使用ganymed-ssh2执行linux命令
- ganymed-ssh2-build210.jar 的使用
- 使用ssh命令实现scp
- 实现ssh和scp无密码访问
- Ganymed SSH-2 for Java系列1之 ganymed-ssh2介绍
- Ganymed SSH-2 for Java系列1之 ganymed-ssh2介绍
- Ganymed SSH-2 for Java系列1之 ganymed-ssh2介绍
- SSH2对于Java的轻量级实现方案-ganymed
- ganymed-ssh2简介
- Ganymed SSH2 模拟类似FileZilla远程传输文件(基于SCP协议)
- ganymed-ssh2-build250使用中遇到的问题
- HDU 3117 Fibonacci Numbers(斐波那契前后四位,打表+取对+矩阵快速幂)
- Cocos2d-x中Lua脚本的加密
- Ubuntu中ckhconfig不能用了,解决办法
- HDU 2254 奥运(矩阵快速幂+二分等比序列求和)
- ganymed-ssh2实现java ssh协议采集
- 使用ganymed ssh2实现scp以及ssh内容访问
- 求条形图中最大矩形的面积的两种算法
- Spring MVC和Struts2的比较的优点
- 猜想 QQ好友分组 (微信好友)多层次分组策略 QQ好友过多
- HDU 1166 敌兵布阵(线段树入门,单点更新)
- [笔记]javascript面向对象 - 继承的几种模式
- HDU 1686 Lazy Math Instructor(中缀转后缀,栈模拟)
- JavaSe基础XX04——多维数组
- HDU 3264 Balanced Lineup(线段树,最值查询)