java利用Jsch实现在windows平台远程操作linux服务器
- 说明:exec用于执行命令;sftp用于文件处理
- package com.wyg.simple;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.util.Properties;
- import java.util.Vector;
- import com.jcraft.jsch.Channel;
- import com.jcraft.jsch.ChannelExec;
- import com.jcraft.jsch.ChannelSftp;
- import com.jcraft.jsch.JSch;
- import com.jcraft.jsch.JSchException;
- import com.jcraft.jsch.Session;
- import com.jcraft.jsch.SftpException;
- public class JSchUtils {
- private static JSch jsch;
- private static Session session;
- /**
- * 连接到指定的IP
- *
- * @throws JSchException
- */
- public static void connect(String user, String passwd, String host, int port) throws JSchException {
- jsch = new JSch();// 创建JSch对象
- session = jsch.getSession(user, host, port);// 根据用户名、主机ip、端口号获取一个Session对象
- session.setPassword(passwd);// 设置密码
- Properties config = new Properties();
- config.put("StrictHostKeyChecking", "no");
- session.setConfig(config);// 为Session对象设置properties
- session.setTimeout(1500);// 设置超时
- session.connect();// 通过Session建立连接
- }
- /**
- * 关闭连接
- */
- public static void close() {
- session.disconnect();
- }
- /**
- * 执行相关的命令
- *
- * @throws JSchException
- */
- public static void execCmd(String command) throws JSchException {
- BufferedReader reader = null;
- Channel channel = null;
- try {
- if (command != null) {
- channel = session.openChannel("exec");
- ((ChannelExec) channel).setCommand(command);
- // ((ChannelExec) channel).setErrStream(System.err);
- channel.connect();
- InputStream in = channel.getInputStream();
- reader = new BufferedReader(new InputStreamReader(in));
- String buf = null;
- while ((buf = reader.readLine()) != null) {
- System.out.println(buf);
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- } catch (JSchException e) {
- e.printStackTrace();
- } finally {
- try {
- reader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- channel.disconnect();
- }
- }
- /**
- * 上传文件
- *
- * @param directory
- * 上传的目录
- * @param uploadFile
- * 要上传的文件
- * @param sftp
- * @throws JSchException
- * @throws SftpException
- * @throws FileNotFoundException
- */
- public void upload(String directory, String uploadFile) throws JSchException, FileNotFoundException, SftpException {
- ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
- channelSftp.cd(directory);
- File file = new File(uploadFile);
- channelSftp.put(new FileInputStream(file), file.getName());
- System.out.println("Upload Success!");
- }
- /**
- * 下载文件
- *
- * @param src
- * @param dst
- * @throws JSchException
- * @throws SftpException
- */
- public static void download(String src, String dst) throws JSchException, SftpException {
- // src linux服务器文件地址,dst 本地存放地址
- ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
- channelSftp.connect();
- channelSftp.get(src, dst);
- channelSftp.quit();
- }
- /**
- * 删除文件
- *
- * @param directory
- * 要删除文件所在目录
- * @param deleteFile
- * 要删除的文件
- * @param sftp
- * @throws SftpException
- * @throws JSchException
- */
- public void delete(String directory, String deleteFile) throws SftpException, JSchException {
- ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
- channelSftp.cd(directory);
- channelSftp.rm(deleteFile);
- }
- /**
- * 列出目录下的文件
- *
- * @param directory
- * 要列出的目录
- * @param sftp
- * @return
- * @throws SftpException
- * @throws JSchException
- */
- @SuppressWarnings("rawtypes")
- public Vector listFiles(String directory) throws JSchException, SftpException {
- ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
- return channelSftp.ls(directory);
- }
- public static void main(String[] args) {
- try {
- // 1.连接到指定的服务器
- connect("root", "sankairoot", "10.0.0.251", 22);
- // 2.执行相关的命令
- execCmd("grep '160622150549943666' /data/apps/nginx/logs/access_2016-07-07.log >> /data/nginx_log.20160707.txt");
- // 3.下载文件
- download("/data/nginx_log.20160707.txt", "D:\\temp");
- // 4.关闭连接
- close();
- } catch (JSchException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (SftpException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
java利用Jsch实现在windows平台远程操作linux服务器的更多相关文章
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息
1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...
- 【Linux】Windows终端远程链接Linux服务器
一.Windows cmd ssh链接 1.控制面板->程序->启用Telnet客户端 2.输入命令链接 cmd中输入 ssh 账号名@服务器ip地址:端口号 例如: ssh root@1 ...
- 关于windows下远程连接Linux服务器的方法(CentOs)
1.服务器端安装VNC 1) 安装vncserver yum install -y tigervnc-server 2) 修改配置 vi /etc/sysconfig/vncservers 最后两 ...
- 宝塔利用git+ webhooks 实现git更新远程同步Linux服务器
参考: https://blog.csdn.net/alipea/article/details/83858177 https://www.bt.cn/bbs/thread-5348-1-1.html ...
- 利用Syslog Watcher在windows下部署syslog日志服务器
1.概述 syslog协议是各种网络设备.服务器支持的网络日志记录标准.Syslog消息提供有关网络事件和错误的信息.系统管理员使用Syslog进行网络管理和安全审核. 通过专用的syslog服务器和 ...
- Windows平台下搭建Git服务器的图文教程
Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...
- Windows平台下搭建Git服务器的图文教程(转发)
Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...
- 在windows上通过ssh远程链接linux服务器[转]
本文分别转自 [http://jingyan.baidu.com/article/6d704a130de40e28db51cab5.html] [http://www.cnblogs.com/mliu ...
- SecureCRT远程ssh linux服务器,利用X11本地图形化wireshark抓包,
平时学习抓包,使用wireshark很方便,直接图形化界面抓包,近期项目中遇到了需要通过SecureCRT ssh到linux服务器上面,还要在抓包, 1.简单使用网络数据包截获分析工具tcpdump ...
随机推荐
- oracle表结构和表内容差异比对【原】
oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 ...
- 所有HTTP请求参数及报文查看SERVLET【原】
HttpRequestServlet.java 说明: 用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来. package king.se ...
- 阿里云(四)Linux 实例常用内核网络参数介绍与常见问题处理
Linux 实例常用内核网络参数介绍与常见问题处理 https://help.aliyun.com/knowledge_detail/41334.html
- vue项目中安装使用echarts
安装:cnpm install echarts -S (安装依赖并引入到 package.json) 官网安装说明:http://echarts.baidu.com/tutorial.html#%E5 ...
- 使用eclipse创建web项目的项目图文步骤
在eclipse中使用maven ① maven插件:eclipse内置 ②maven插件的设置: [1]installations:指定maven核心程序的位置,不建议使用自带的maven程序而应该 ...
- Servlet.service() for servlet jsp threw exception
报错信息如下: org.apache.catalina.core.ApplicationDispatcher invoke 严重: Servlet.service() for servlet jsp ...
- 如何用MoveIt快速搭建机器人运动规划平台?
MoveIt = RobotGo,翻译成中文就是“机器人,走你!”所以,MoveIt的主要就是一款致力于让机器人能够自主运动及其相关技术的软件,它的所有模块都是围绕着运动规划的实现而设计的. 两个月前 ...
- Java中在特定区间产生随机数
生成指定范围内的随机数 这个是最常用的技术之一.程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例.问题往往类似于: 如何随机生成 1~100 ...
- 【逆向工具】IDA使用2-VS2015版本release查找main函数入口,局部变量
VS2015版本release查找main函数入口 vc++开发的程序main或WinMain函数是语法规定的用户入口,而不是应用程序入口.入口代码是mainCRTstartup.wmainCRTSt ...
- DataTables 1.10.x与1.9.x参数名对照表
Datatables 1.10.x在命名上与1.9.x的有区别,新版的使用的是驼峰的命名规则,而之前的是采用匈牙利命名规则 当然,这些变化都是向下兼容的,你可以继续使用旧版本的api方法的参数和名称. ...