java利用Jsch实现在windows平台远程操作linux服务器

说明: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 }
时间: 2024-10-21 17:19:13

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

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

1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html https://www.cnblogs.com/longyg/archive/2012/06/25/2561332.html https://www.cnblogs.com/qdwyg2013/p/5650764.html#top 引入jar包的maven依赖如下所示:

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

一.Windows cmd ssh链接 1.控制面板->程序->启用Telnet客户端 2.输入命令链接 cmd中输入 ssh 账号名@服务器ip地址:端口号 例如: ssh [email protected] 第一次需要输入yes,如果输了no就无法连接了 二.MobaXterm 1.下载 国外网站下载比较慢 https://mobaxterm.mobatek.net/download.html 百度网盘下载:https://pan.baidu.com/s/1mx7ldW-RFGSp7aLF

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

Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在windows下的开发要把自己的Git仓库共享出去的话,就必 须做SSH服务器 Git服务现在独树一帜,相比与SVN有更多的灵活性,最流行的开源项目托管网站Github上面,如果托管开源项目,那么就是免费使用的,但是闭源的项目就会收取昂贵的费用,如果你不缺米,那么不在本文讨论的范围内,既然这样,我们可以自己搭建

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

Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在windows下的开发要把自己的Git仓库共享出去的话,就必 须做SSH服务器 Git服务现在独树一帜,相比与SVN有更多的灵活性,最流行的开源项目托管网站Github上面,如果托管开源项目,那么就是免费使用的,但是闭源的项目就会收取昂贵的费用,如果你不缺米,那么不在本文讨论的范围内,既然这样,我们可以自己搭建

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

1.概述 syslog协议是各种网络设备.服务器支持的网络日志记录标准.Syslog消息提供有关网络事件和错误的信息.系统管理员使用Syslog进行网络管理和安全审核. 通过专用的syslog服务器和syslog协议将来自整个网络的事件记录整合到一个中央存储库中,对于网络安全具有重大意义,syslog日志服务器可收集,解析,存储,分析和解释系统日志消息给专业网络安全管理员,有助于提高网络的稳定性和可靠性. 通过Syslog Watcher可在windows平台搭建日志集中服务器,便于管理并满足合

VNCViewer Windows下远程连接Linux桌面

最近项目需求,需要将写的工程部署到centos6.5服务器上,但是出现了各种错误,就想着在linux下再调试代码.但是之前都是通过ssh链接远程服务器的,在ssh中肯定不能打开eclipse等集成开发工具,因此我们要在远程服务器上安装桌面及vncserver,然后在windows中用vncViewer连接. 一:服务器端(Centos6.5) 1:安装桌面: # yum groupinstall "GNOME Desktop Environment"(CentOS 5.x安装GNOME

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

本文分别转自 [http://jingyan.baidu.com/article/6d704a130de40e28db51cab5.html] [http://www.cnblogs.com/mliudong/p/4094519.html] 今天想要新装了一台linux服务器,想要将其搬到机房,同时也要实现通过别的电脑对该服务器的访问,通过windows上装的ssh访问linux服务器,发现链接不上,通过百度发现linux服务器上要装ssh-server,所以百度了安装教程(http://jin

php如何利用python实现对pdf文件的操作(读写、合并分割)

php如何利用python实现对pdf文件的操作 需求:在PHP里实现了把8.pdf的前4页pdf文件截取出来生成新的pdf文件. 详细步骤如下: 1. 安装python第三方库PyPDF2 前提:python必须是3.x版本以上,必要时需要升级pip3,命令如下:pip3 install --upgrade pipPyPDF 自 2010年 12月开始就不在更新了,PyPDF2 接棒 PyPDF, 在此使用PyPDF2. 安装命令:pip install PyPDF2 2.编写python脚本

widows本地-xshell实现远程连接linux服务器图形界面

本地环境远程连接linux图形界面,常用的实现工具有,VNC.Puty.Xshell等,这里我们用的xshell manager: Xmanager简介:Xmanager是一个运行于 Windows平台上的高性能的X Server软件.它能把远端Unix/Linux的桌面无缝地带到你的Windows上,甚至电脑是在内网或防火墙后,也能通过SSH协议安全的运行远端的X应用程序. 特点包括: 可通过Xcongfig工具设置多个Xmanager设置: 支持多用户的Windows终端环境: 支持多个IP