最近项目要部署10台设备,如果每台设备都手动进行部署想想也是醉了。

  因为之前一直使用SecurityFX以及SecurityCRT,所以考虑是否可以使用基于SSH2的类库来实现文件拷贝以及远程命令调用。

  后来发现了Trilead库:

  jar下载地址:

  http://mvnrepository.com/artifact/com.trilead/trilead-ssh2/1.0.0-build221

  git源码地址:

  https://github.com/jenkinsci/trilead-ssh2/

  看到源码地址,知道了这是Jekins相关的开源项目。

  上代码:

  实现远程指令执行:

        Connection conn = new Connection("10.1.108.35");
try {
conn.connect();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
conn.authenticateWithPassword("root", "rootbd");
Session session = conn.openSession();
SFTPv3Client client = new SFTPv3Client(conn);
//client.rm("/apps/123/Nero.exe");
session.execCommand("mkdir /apps/123");
InputStream inp = session.getStdout();
InputStreamReader reader = new InputStreamReader(inp);
BufferedReader br = new BufferedReader(reader); String line = br.readLine();
System.out.println(line);

  这是前半段代码,主要是实现了远程执行指令,调用的是session的execCommand;

  还可以使用SFTPv3Client(Security FTP)内置的常用函数,ls,rm等来进行常用简单操作;

  下面是后半段代码,主要是实现了文件上传功能;

            SCPClient scpClient = conn.createSCPClient();

            System.out.println("开始拷贝文件...");
scpClient.put("e:\\tmp\\sendFiles\\Nero.exe", "/apps/123/");
System.out.println("拷贝文件完成!");
Vector<SFTPv3DirectoryEntry> files = client.ls("/apps/123");
for(SFTPv3DirectoryEntry item : files){
System.out.println("文件名称: " + item.filename);
}
/*
SFTPv3FileHandle handle = client.createFile("/apps/123/Nero.exe");
File localFile = new File("e:\\tmp\\sendFiles\\Nero.exe");
FileInputStream fis = new FileInputStream(localFile);
byte[] arr = new byte[(int) localFile.length()];
fis.read(arr);
fis.close();
client.write(handle, 0, arr, 0, arr.length);
client.closeFile(handle);
*/
client.close();
conn.close();
} catch (IOException e) {
e.printStackTrace();
}

  这里采用的是SCPClient,熟悉Linux指令的童鞋都知道SCP指令用于远程拷贝文件,局域网内部100M带宽可以达到80M/s的传输速率,很快;

  后面是实践SFTPClient的ls函数,返回的是SFTPv3DirectoryEntry的Vector(向量,具备自动伸缩功能)对象,获取远端的文件列表信息;

  最后是一大段的注释,是通过SFTPv3Client来进行传输,可以控制到字节力度,但是传输速度太慢;在网络不好的情况下,想要使用断点续传等机制可以采用。

  

  

最新文章

  1. POJ 3415 Common Substrings ——后缀数组
  2. window2012 64bit 安装sqlserver2012 64bit调用excel的驱动安装
  3. 常用的php字符串处理函数
  4. Hopfield模型
  5. 推荐几个可以与PhoneGap很好搭配的UI框架
  6. bootcamp
  7. Linux中利用crontab创建计划任务
  8. ajax修改密码
  9. 【Sqlserver系列】CAST和CONVERT
  10. 多态原理探究-从C++编译器角度理解多态的实现原理
  11. Windows下安装Spark环境
  12. 转:深入理解Java G1垃圾收集器
  13. windows和linux文件输 - ftp
  14. .net运行时dll的查找路径顺序
  15. Android的设计尺寸
  16. 洛谷 P1082 同余方程
  17. logback -- 配置详解 -- 二 -- &lt;appender&gt;
  18. gcc中支持的一种字符串表示方式
  19. 132页Filter代码分析
  20. Lua学习笔记(3):运算符

热门文章

  1. Ubuntu 12.04使用uginx+fastcgi-mono-server2部署asp.net 网站
  2. 九度OJ 1333:考研海报 (区间操作)
  3. 【Android】开发优化之——调优工具:dump hprof file 查看内存情况,找到内存泄露
  4. html5 说明
  5. path.join()和path.resolve()区别
  6. [原创]java WEB学习笔记19:初识MVC 设计模式:查询,删除 练习(理解思想),小结 ,问题
  7. vRA Customizing error
  8. Vim 的命令模式转插入模式
  9. &lt;再看TCP/IP第一卷&gt;关于网络层及协议细节---ICMP协议几个要注意的地方
  10. Win7远程桌面_ZC01