使用ganymed ssh2实现scp以及ssh内容访问

使用ganymed ssh2实现scp以及ssh内容访问

  (2012-12-19 14:57:07)
标签: 

ganymed

 

ssh2

 

scp

 

java

 

ssh

 

it

分类: Java
Ganymed SSH-2 for Java是一个开源的java代码实现ssh的


一,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等机器
            out.write("ssh 192.168.0.105\n".getBytes());
            Thread.sleep(1000);
// 输入密码
            out.write("*****\n".getBytes());
            Thread.sleep(1000);
            out.write("df -h\n".getBytes());

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
                                   50G   3.5G    44G    8% /
tmpfs                           16G   100K    16G    1% /dev/shm
/dev/sdb1                   485M    37M   423M    8% /boot
/dev/mapper/VolGroup-lv_home
                                 835G   3.5G   789G    1% /home
/dev/sda                     5.4T   4.7T   410G   93% /mnt
[root@swbss-ftp-007 xyz]# 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值