1. 说明:exec用于执行命令;sftp用于文件处理
  1. package com.wyg.simple;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.InputStreamReader;
  10. import java.util.Properties;
  11. import java.util.Vector;
  12.  
  13. import com.jcraft.jsch.Channel;
  14. import com.jcraft.jsch.ChannelExec;
  15. import com.jcraft.jsch.ChannelSftp;
  16. import com.jcraft.jsch.JSch;
  17. import com.jcraft.jsch.JSchException;
  18. import com.jcraft.jsch.Session;
  19. import com.jcraft.jsch.SftpException;
  20.  
  21. public class JSchUtils {
  22. private static JSch jsch;
  23. private static Session session;
  24.  
  25. /**
  26. * 连接到指定的IP
  27. *
  28. * @throws JSchException
  29. */
  30. public static void connect(String user, String passwd, String host, int port) throws JSchException {
  31. jsch = new JSch();// 创建JSch对象
  32. session = jsch.getSession(user, host, port);// 根据用户名、主机ip、端口号获取一个Session对象
  33. session.setPassword(passwd);// 设置密码
  34.  
  35. Properties config = new Properties();
  36. config.put("StrictHostKeyChecking", "no");
  37. session.setConfig(config);// 为Session对象设置properties
  38. session.setTimeout(1500);// 设置超时
  39. session.connect();// 通过Session建立连接
  40. }
  41.  
  42. /**
  43. * 关闭连接
  44. */
  45. public static void close() {
  46. session.disconnect();
  47. }
  48.  
  49. /**
  50. * 执行相关的命令
  51. *
  52. * @throws JSchException
  53. */
  54. public static void execCmd(String command) throws JSchException {
  55. BufferedReader reader = null;
  56. Channel channel = null;
  57. try {
  58. if (command != null) {
  59. channel = session.openChannel("exec");
  60. ((ChannelExec) channel).setCommand(command);
  61. // ((ChannelExec) channel).setErrStream(System.err);
  62. channel.connect();
  63.  
  64. InputStream in = channel.getInputStream();
  65. reader = new BufferedReader(new InputStreamReader(in));
  66. String buf = null;
  67. while ((buf = reader.readLine()) != null) {
  68. System.out.println(buf);
  69. }
  70. }
  71. } catch (IOException e) {
  72. e.printStackTrace();
  73. } catch (JSchException e) {
  74. e.printStackTrace();
  75. } finally {
  76. try {
  77. reader.close();
  78. } catch (IOException e) {
  79. e.printStackTrace();
  80. }
  81. channel.disconnect();
  82. }
  83. }
  84.  
  85. /**
  86. * 上传文件
  87. *
  88. * @param directory
  89. * 上传的目录
  90. * @param uploadFile
  91. * 要上传的文件
  92. * @param sftp
  93. * @throws JSchException
  94. * @throws SftpException
  95. * @throws FileNotFoundException
  96. */
  97. public void upload(String directory, String uploadFile) throws JSchException, FileNotFoundException, SftpException {
  98. ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
  99. channelSftp.cd(directory);
  100. File file = new File(uploadFile);
  101. channelSftp.put(new FileInputStream(file), file.getName());
  102. System.out.println("Upload Success!");
  103. }
  104.  
  105. /**
  106. * 下载文件
  107. *
  108. * @param src
  109. * @param dst
  110. * @throws JSchException
  111. * @throws SftpException
  112. */
  113. public static void download(String src, String dst) throws JSchException, SftpException {
  114. // src linux服务器文件地址,dst 本地存放地址
  115. ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
  116. channelSftp.connect();
  117. channelSftp.get(src, dst);
  118. channelSftp.quit();
  119. }
  120.  
  121. /**
  122. * 删除文件
  123. *
  124. * @param directory
  125. * 要删除文件所在目录
  126. * @param deleteFile
  127. * 要删除的文件
  128. * @param sftp
  129. * @throws SftpException
  130. * @throws JSchException
  131. */
  132. public void delete(String directory, String deleteFile) throws SftpException, JSchException {
  133. ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
  134. channelSftp.cd(directory);
  135. channelSftp.rm(deleteFile);
  136. }
  137.  
  138. /**
  139. * 列出目录下的文件
  140. *
  141. * @param directory
  142. * 要列出的目录
  143. * @param sftp
  144. * @return
  145. * @throws SftpException
  146. * @throws JSchException
  147. */
  148. @SuppressWarnings("rawtypes")
  149. public Vector listFiles(String directory) throws JSchException, SftpException {
  150. ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
  151. return channelSftp.ls(directory);
  152. }
  153.  
  154. public static void main(String[] args) {
  155. try {
  156. // 1.连接到指定的服务器
  157. connect("root", "sankairoot", "10.0.0.251", 22);
  158.  
  159. // 2.执行相关的命令
  160. execCmd("grep '160622150549943666' /data/apps/nginx/logs/access_2016-07-07.log >> /data/nginx_log.20160707.txt");
  161.  
  162. // 3.下载文件
  163. download("/data/nginx_log.20160707.txt", "D:\\temp");
  164.  
  165. // 4.关闭连接
  166. close();
  167. } catch (JSchException e) {
  168. // TODO Auto-generated catch block
  169. e.printStackTrace();
  170. } catch (SftpException e) {
  171. // TODO Auto-generated catch block
  172. e.printStackTrace();
  173. }
  174. }
  175. }

java利用Jsch实现在windows平台远程操作linux服务器的更多相关文章

  1. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  2. 【Linux】Windows终端远程链接Linux服务器

    一.Windows cmd ssh链接 1.控制面板->程序->启用Telnet客户端 2.输入命令链接 cmd中输入 ssh 账号名@服务器ip地址:端口号 例如: ssh root@1 ...

  3. 关于windows下远程连接Linux服务器的方法(CentOs)

    1.服务器端安装VNC 1) 安装vncserver yum install -y tigervnc-server 2) 修改配置 vi /etc/sysconfig/vncservers   最后两 ...

  4. 宝塔利用git+ webhooks 实现git更新远程同步Linux服务器

    参考: https://blog.csdn.net/alipea/article/details/83858177 https://www.bt.cn/bbs/thread-5348-1-1.html ...

  5. 利用Syslog Watcher在windows下部署syslog日志服务器

    1.概述 syslog协议是各种网络设备.服务器支持的网络日志记录标准.Syslog消息提供有关网络事件和错误的信息.系统管理员使用Syslog进行网络管理和安全审核. 通过专用的syslog服务器和 ...

  6. Windows平台下搭建Git服务器的图文教程

    Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...

  7. Windows平台下搭建Git服务器的图文教程(转发)

    Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...

  8. 在windows上通过ssh远程链接linux服务器[转]

    本文分别转自 [http://jingyan.baidu.com/article/6d704a130de40e28db51cab5.html] [http://www.cnblogs.com/mliu ...

  9. SecureCRT远程ssh linux服务器,利用X11本地图形化wireshark抓包,

    平时学习抓包,使用wireshark很方便,直接图形化界面抓包,近期项目中遇到了需要通过SecureCRT ssh到linux服务器上面,还要在抓包, 1.简单使用网络数据包截获分析工具tcpdump ...

随机推荐

  1. oracle表结构和表内容差异比对【原】

    oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 ...

  2. 所有HTTP请求参数及报文查看SERVLET【原】

    HttpRequestServlet.java 说明: 用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来. package king.se ...

  3. 阿里云(四)Linux 实例常用内核网络参数介绍与常见问题处理

    Linux 实例常用内核网络参数介绍与常见问题处理 https://help.aliyun.com/knowledge_detail/41334.html

  4. vue项目中安装使用echarts

    安装:cnpm install echarts -S (安装依赖并引入到 package.json) 官网安装说明:http://echarts.baidu.com/tutorial.html#%E5 ...

  5. 使用eclipse创建web项目的项目图文步骤

    在eclipse中使用maven ① maven插件:eclipse内置 ②maven插件的设置: [1]installations:指定maven核心程序的位置,不建议使用自带的maven程序而应该 ...

  6. Servlet.service() for servlet jsp threw exception

    报错信息如下: org.apache.catalina.core.ApplicationDispatcher invoke 严重: Servlet.service() for servlet jsp ...

  7. 如何用MoveIt快速搭建机器人运动规划平台?

    MoveIt = RobotGo,翻译成中文就是“机器人,走你!”所以,MoveIt的主要就是一款致力于让机器人能够自主运动及其相关技术的软件,它的所有模块都是围绕着运动规划的实现而设计的. 两个月前 ...

  8. Java中在特定区间产生随机数

    生成指定范围内的随机数 这个是最常用的技术之一.程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例.问题往往类似于: 如何随机生成 1~100 ...

  9. 【逆向工具】IDA使用2-VS2015版本release查找main函数入口,局部变量

    VS2015版本release查找main函数入口 vc++开发的程序main或WinMain函数是语法规定的用户入口,而不是应用程序入口.入口代码是mainCRTstartup.wmainCRTSt ...

  10. DataTables 1.10.x与1.9.x参数名对照表

    Datatables 1.10.x在命名上与1.9.x的有区别,新版的使用的是驼峰的命名规则,而之前的是采用匈牙利命名规则 当然,这些变化都是向下兼容的,你可以继续使用旧版本的api方法的参数和名称. ...