精华内容
下载资源
问答
  • java ssh上传文件代码

    2019-01-18 16:56:41
    简易的上传代码方便新手理解,Struts2+Spring+hibernate上传
  • Java SSH框架整合,分分钟学会!!
  • JAVA SSH 最全jar包

    2018-04-16 11:09:25
    Spring3+Struts2+Hibernate4最全jar包,无需再去其他地方找。
  • NULL 博文链接:https://killeraction.iteye.com/blog/1022141
  • jqGrid整合Java SSH框架实例
  • java ssh 导出excel代码

    2016-11-28 16:22:24
    java ssh 导出excel代码
  • 后台框架: struts2.5 + spring4.3 + hibernate5.2 前端框架: jquery + layer + bootstrap 功能完整,有数据库说明文档
  • Java ssh 项目

    2018-05-18 09:34:14
    完整的java ssh三大框架项目 适合刚刚要学习java框架的人看看
  • JAVA SSH项目参考

    2018-12-07 11:56:48
    JAVA SSH项目 可以直接运行 有参考价值 初学者或者有想了解SSH项目的朋友可以看看~
  • JAVA SSH项目(动态数据库,总库分库实时切换,内含sql文件,纯后台)
  • java ssh客户端 可以使用jcabi-sshJava中通过几行代码通过SSH执行shell命令: String hello = new Shell.Plain( new SSH( "ssh.example.com", 22, "yegor", "-----BEGIN RSA PRIVATE KEY-----..." ) ).exec...

    java ssh客户端

    可以使用jcabi-ssh在Java中通过几行代码通过SSH执行shell命令:

    String hello = new Shell.Plain(
      new SSH(
        "ssh.example.com", 22,
        "yegor", "-----BEGIN RSA PRIVATE KEY-----..."
      )
    ).exec("echo 'Hello, world!'");

    jcabi-sshJSch的便捷包装, JSch是SSH2的著名纯Java实现。

    这是一个更复杂的场景,其中我通过SSH上传文件,然后读回其grepped的内容:

    Shell shell = new SSH(
      "ssh.example.com", 22,
      "yegor", "-----BEGIN RSA PRIVATE KEY-----..."
    );
    File file = new File("/tmp/data.txt");
    new Shell.Safe(shell).exec(
      "cat > d.txt && grep 'some text' d.txt",
      new FileInputStream(file),
      Logger.stream(Level.INFO, this),
      Logger.stream(Level.WARNING, this)
    );

    实现接口Shell SSH类只有一种方法exec 。 此方法接受四个参数:

    interface Shell {
      int exec(
        String cmd, InputStream stdin,
        OutputStream stdout, OutputStream stderr
      );
    }

    我认为这些论点是很明显的。

    还有一些方便的装饰器,使使用简单命令更容易操作。

    壳牌安全

    Shell.Safe装饰Shell一个实例,并且如果exec退出代码不等于零,则引发异常。 当您要确保命令成功执行但又不想在代码的很多地方重复if/throw不重复时,这可能非常有用。

    Shell ssh = new Shell.Safe(
      new SSH(
        "ssh.example.com", 22,
        "yegor", "-----BEGIN RSA PRIVATE KEY-----..."
      )
    );

    壳牌

    Shell.Verbose装饰Shell一个实例,并将stdoutstderr复制到slf4j日志记录工具(使用jcabi-log )。 当然,您可以组合装饰器,例如:

    Shell ssh = new Shell.Verbose(
      new Shell.Safe(
        new SSH(
          "ssh.example.com", 22,
          "yegor", "-----BEGIN RSA PRIVATE KEY-----..."
        )
      )
    );

    壳牌

    Shell.PlainShell的包装,它引入了一个仅具有一个参数(执行命令)的新exec方法。 它还不返回退出代码,而是返回stdout 。 当您想执行一个简单命令并仅获取其输出时,这应该非常方便(为了安全Shell.Safe ,我将其与Shell.Safe结合使用):

    String login = new Shell.Plain(new Shell.Safe(ssh)).exec("whoami");

    下载

    您在Maven项目中需要一个依赖项jcabi-ssh.jar (在Maven Central中获取最新版本):

    <dependency>
      <groupId>com.jcabi</groupId>
      <artifactId>jcabi-ssh</artifactId>
    </dependency>
    • 该项目在Github中 。 如果您有任何问题,只需提交一个问题。 我会尽力的。

    相关文章

    您可能还会发现以下有趣的帖子:

    翻译自: https://www.javacodegeeks.com/2014/09/simple-java-ssh-client.html

    java ssh客户端

    展开全文
  • java SSH框架架构学习_笔记.zip java SSH框架架构学习_笔记.struts,spring,hibernate. IOC,AOP,JDBC,编写个留言管理系统网站
  • java ssh整合包

    2017-12-18 13:22:09
    java ssh整合包java ssh整合包java ssh整合包java ssh整合包
  • 它是Java的便捷SSH客户端: import com.jcabi.ssh.Shell ; import com.jcabi.ssh.Ssh ; Shell shell = new Ssh ( " example.com " , 22 , " username " , " key... " ); String stdout = new Shell . Plain (shell...
  • 简单的Java SSH客户端

    2020-05-20 08:55:39
    可以使用jcabi-sshJava中通过几行代码通过SSH执行shell命令: String hello = new Shell.Plain( new SSH( "ssh.example.com", 22, "yegor", "-----BEGIN RSA PRIVATE KEY-----..." ) ).exec("echo 'Hello, ...

    可以使用jcabi-ssh在Java中通过几行代码通过SSH执行shell命令:

    String hello = new Shell.Plain(
      new SSH(
        "ssh.example.com", 22,
        "yegor", "-----BEGIN RSA PRIVATE KEY-----..."
      )
    ).exec("echo 'Hello, world!'");

    jcabi-sshJSch的便捷包装, JSch是SSH2的著名纯Java实现。

    这是一个更复杂的场景,其中我通过SSH上传文件,然后读回其grepped的内容:

    Shell shell = new SSH(
      "ssh.example.com", 22,
      "yegor", "-----BEGIN RSA PRIVATE KEY-----..."
    );
    File file = new File("/tmp/data.txt");
    new Shell.Safe(shell).exec(
      "cat > d.txt && grep 'some text' d.txt",
      new FileInputStream(file),
      Logger.stream(Level.INFO, this),
      Logger.stream(Level.WARNING, this)
    );

    实现接口Shell SSH类只有一种方法exec 。 此方法接受四个参数:

    interface Shell {
      int exec(
        String cmd, InputStream stdin,
        OutputStream stdout, OutputStream stderr
      );
    }

    我认为这些论点是显而易见的。

    还有一些方便的修饰器,使使用简单命令更容易操作。

    壳牌安全

    Shell.Safe装饰Shell一个实例,并且如果exec退出代码不等于零,则引发异常。 当您要确保命令成功执行但又不想在代码的很多地方重复if/throw不重复时,这可能非常有用。

    Shell ssh = new Shell.Safe(
      new SSH(
        "ssh.example.com", 22,
        "yegor", "-----BEGIN RSA PRIVATE KEY-----..."
      )
    );

    壳牌

    Shell.Verbose装饰Shell一个实例,并将stdoutstderr复制到slf4j日志记录工具(使用jcabi-log )。 当然,您可以组合装饰器,例如:

    Shell ssh = new Shell.Verbose(
      new Shell.Safe(
        new SSH(
          "ssh.example.com", 22,
          "yegor", "-----BEGIN RSA PRIVATE KEY-----..."
        )
      )
    );

    壳牌

    Shell.PlainShell的包装,它引入了一个仅具有一个参数(执行命令)的新exec方法。 它还不返回退出代码,而是返回stdout 。 当您想执行一个简单命令并仅获取其输出时,这应该非常方便(为了安全Shell.Safe ,我将其与Shell.Safe结合使用):

    String login = new Shell.Plain(new Shell.Safe(ssh)).exec("whoami");

    下载

    您在Maven项目中需要一个依赖项jcabi-ssh.jar (在Maven Central中获取最新版本):

    <dependency>
      <groupId>com.jcabi</groupId>
      <artifactId>jcabi-ssh</artifactId>
    </dependency>
    • 该项目在Github中 。 如果您有任何问题,只需提交一个问题。 我会尽力的。

    相关文章

    您可能还会发现以下有趣的帖子:

    翻译自: https://www.javacodegeeks.com/2014/09/simple-java-ssh-client.html

    展开全文
  • javaSSH2整合

    2015-11-17 17:35:40
    javaSSH2整合
  • Java ssh 权限系统 开发视频教程 第19讲(超清版).mp4
  • 没有积分的亲可以到:http://pigsou.com/content.html?id=218 有积分希望支持下用积分换购。绝对值得呢。
  • Java ssh 权限系统 开发视频教程 第16讲(超清版).mp4
  • Java ssh 权限系统 开发视频教程 第15讲(超清版).mp4
  • java ssh 安全访问代码

    2015-08-28 17:57:38
    java ssh 安全访问代码,里面有详细说明
  • Java ssh 权限系统 开发视频教程 第01讲(超清版).zip
  • 主要介绍了java通过ssh连接服务器执行shell命令详解及实例方法的相关资料
  • JAVA SSH框架

    2014-02-21 21:37:17
    Java环境下的SSH框架(Web)。包括最基本的登录,注册,退出等功能。是初学者的最佳选择!
  • JavaSsh.java

    2019-05-23 20:07:35
    通过java代码 实现传入ssh命令 获取到对应ssh命令的值 只需要用户名 密码 命令等参数
  • Java SSH连接mysql数据库

    2020-04-17 17:13:52
    当目标数据库不能直连的,需要一个服务器作为中间跳板的时候,我们需要通过SSH通道连接数据库,其使用方式如下: 引入依赖 <!--SSH--> <dependency> <groupId>com.jcraft</groupId> <...

    当目标数据库不能直连的,需要一个服务器作为中间跳板的时候,我们需要通过SSH通道连接数据库,其使用方式如下:
    引入依赖

        <!--SSH-->
            <dependency>
                <groupId>com.jcraft</groupId>
                <artifactId>jsch</artifactId>
                <version>0.1.55</version>
            </dependency>
    

    编写SSHConnection连接类

    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.Session;
    import java.util.Properties;
    
    public class SSHConnection {
    
        private final static String S_PATH_FILE_KNOWN_HOSTS = "localhost";
        private final static int LOCAl_PORT = 3307;
        private final static int REMOTE_PORT = 3306;
        private final static int SSH_REMOTE_PORT = 22;
        private final static String SSH_USER = "root";
        private final static String SSH_PASSWORD = "123456";
        private final static String SSH_REMOTE_SERVER = "39.100.4.8";
        private final static String MYSQL_REMOTE_SERVER = "39.22.22.1";
    
        private Session sesion; //represents each ssh session
    
        public void closeSSH ()
        {
            sesion.disconnect();
        }
    
        public SSHConnection () throws Throwable
        {
    
            JSch jsch = null;
    
            jsch = new JSch();
            jsch.setKnownHosts(S_PATH_FILE_KNOWN_HOSTS);
            //jsch.addIdentity(S_PATH_FILE_PRIVATE_KEY);
    
            sesion = jsch.getSession(SSH_USER, SSH_REMOTE_SERVER, SSH_REMOTE_PORT);
    
            sesion.setPassword(SSH_PASSWORD);
    
            Properties config = new Properties();
            config.put("StrictHostKeyChecking", "no");
            sesion.setConfig(config);
    
            sesion.connect(); //ssh connection established!
    
            //by security policy, you must connect through a fowarded port
            sesion.setPortForwardingL(LOCAl_PORT, MYSQL_REMOTE_SERVER, REMOTE_PORT);
    
        }
    
    }
    

    编写MyContextListener监听

    import org.springframework.stereotype.Component;
    
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.annotation.WebListener;
    
    @WebListener
    @Component
    public class MyContextListener implements ServletContextListener {
    
        private SSHConnection conexionssh;
        public MyContextListener() {
            super();
        }
        /**
         * @see ServletContextListener#contextInitialized(ServletContextEvent)
         */
        public void contextInitialized(ServletContextEvent arg0) {
            System.out.println("Context initialized ... !");
            try {
                conexionssh = new SSHConnection();
            } catch (Throwable e) {
                e.printStackTrace(); // error connecting SSH server
            }
        }
    
        /**
         * @see ServletContextListener#contextDestroyed(ServletContextEvent)
         */
        public void contextDestroyed(ServletContextEvent arg0) {
            System.out.println("Context destroyed ... !");
            conexionssh.closeSSH(); // disconnect
        }
    
    }
    
    

    更改数据库配置文件

    # 服务端口和服务名称
    spring:
        datasource:
            url: jdbc:mysql://localhost:3307/cs?useUnicode=true&characterEncoding=UTF8&allowMultiQueries=true&useSSL=false&serverTimezone=UTC
            username: cs
            password: 987654321
            driver-class-name: com.mysql.jdbc.Driver
            type: com.alibaba.druid.pool.DruidDataSource
            connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=15000
            initialSize: 5
            minIdle: 5
            maxActive: 20
            maxWait: 60000
            timeBetweenEvictionRunsMillis: 60000
            minEvictableIdleTimeMillis: 300000
            validationQuery: SELECT 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            poolPreparedStatements: true
            maxPoolPreparedStatementPerConnectionSize: 20
            filters: stat,wall,log4j
            useGlobalDataSourceStat: true
    

    这样使得使用本地指定的3307端口的时候会通过跳板服务器连接目标数据库,而其它端口则不会例如3306
    至此完毕

    展开全文
  • java ssh各种类型文件的上传和下载。 不懂可以再csdn上给我留言。 我们互相学习。共同进步。
  • javassh框架写的一个小项目,麻雀虽小,五脏俱全,可以作为参考,也可以自己二次开发
  • 里面有JavaSSH框架整合的所有需要的jar包,方便直接引用
  • java ssh传输文件

    千次阅读 2018-11-21 16:43:17
    //修改服务器/etc/ssh/sshd_config 中 GSSAPIAuthentication的值yes为no,解决用户不能远程登录 sshSession.setConfig("userauth.gssapi-with-mic", "no"); //为session对象设置properties,第一次访问服务器时...

    maven依赖

    <!-- https://mvnrepository.com/artifact/com.jcraft/jsch -->
    <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>0.1.54</version>
    </dependency>
    

    代码如下

    package com;
    
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileFilter;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
     
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
     
    import com.jcraft.jsch.ChannelSftp;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.Session;
     
    public class Ftp {
     
        //打印log日志
        private static final Log logger = LogFactory.getLog(Ftp.class);
     
        private static Date last_push_date = null;
     
        private Session sshSession;
     
        private ChannelSftp channel;
     
        private static ThreadLocal<Ftp> sftpLocal = new ThreadLocal<Ftp>();
     
        private Ftp(String host, int port, String username, String password) throws Exception {
            JSch jsch = new JSch();
            jsch.getSession(username, host, port);
            //根据用户名,密码,端口号获取session
            sshSession = jsch.getSession(username, host, port);
            sshSession.setPassword(password);
            //修改服务器/etc/ssh/sshd_config 中 GSSAPIAuthentication的值yes为no,解决用户不能远程登录
            sshSession.setConfig("userauth.gssapi-with-mic", "no");
     
            //为session对象设置properties,第一次访问服务器时不用输入yes
            sshSession.setConfig("StrictHostKeyChecking", "no");
            sshSession.connect();
            //获取sftp通道
            channel = (ChannelSftp)sshSession.openChannel("sftp");
            channel.connect();
            logger.info("连接ftp成功!");
        }
     
        /**
         * 是否已连接
         *
         * @return
         */
        private boolean isConnected() {
            return null != channel && channel.isConnected();
        }
     
        /**
         * 获取本地线程存储的sftp客户端
         *
         * @return
         * @throws Exception
         */
        public static Ftp getSftpUtil(String host, int port, String username, String password) throws Exception {
            //获取本地线程
            Ftp sftpUtil = sftpLocal.get();
            if (null == sftpUtil || !sftpUtil.isConnected()) {
                //将新连接防止本地线程,实现并发处理
                sftpLocal.set(new Ftp(host, port, username, password));
            }
            return sftpLocal.get();
        }
     
        /**
         * 释放本地线程存储的sftp客户端
         */
        public static void release() {
            if (null != sftpLocal.get()) {
                sftpLocal.get().closeChannel();
                logger.info("关闭连接" + sftpLocal.get().sshSession);
                sftpLocal.set(null);
     
            }
        }
     
        /**
         * 关闭通道
         *
         * @throws Exception
         */
        public void closeChannel() {
            if (null != channel) {
                try {
                    channel.disconnect();
                } catch (Exception e) {
                    logger.error("关闭SFTP通道发生异常:", e);
                }
            }
            if (null != sshSession) {
                try {
                    sshSession.disconnect();
                } catch (Exception e) {
                    logger.error("SFTP关闭 session异常:", e);
                }
            }
        }
     
        /**
         * @param directory  上传ftp的目录
         * @param uploadFile 本地文件目录
         * @param isDel 是否删除原文件
         *
         */
        public void upload(String directory, String uploadFile, boolean isDel) throws Exception {
            try {       //执行列表展示ls 命令
            channel.ls(directory);       //执行盘符切换cd 命令
            channel.cd(directory);
            List<File> files = getFiles(uploadFile, new ArrayList<File>());
            for (int i = 0; i < files.size(); i++) {
                File file = files.get(i);
                InputStream input = new BufferedInputStream(new FileInputStream(file));
                channel.put(input, file.getName());
                try {
                    if (input != null) input.close();
                } catch (Exception e) {
                    e.printStackTrace();
                    logger.error(file.getName() + "关闭文件时.....异常!" + e.getMessage());
                }
                if (file.exists()&&isDel) {
                    boolean b = file.delete();
                    logger.info(file.getName() + "文件上传完毕!删除标识:" + b);
                }
            }
            }catch (Exception e) {
                logger.error("【子目录创建中】:",e);
                            //创建子目录
                channel.mkdir(directory);
            }
     
        }
        //获取文件
        public List<File> getFiles(String realpath, List<File> files) {
            File realFile = new File(realpath);
            if (realFile.isDirectory()) {
                File[] subfiles = realFile.listFiles(new FileFilter() {
                    @Override
                    public boolean accept(File file) {
                        if (null == last_push_date ) {
                            return true;
                        } else {
                            long modifyDate = file.lastModified();
                            return modifyDate > last_push_date.getTime();
                        }
                    }
                });
                for (File file : subfiles) {
                    if (file.isDirectory()) {
                        getFiles(file.getAbsolutePath(), files);
                    } else {
                        files.add(file);
                    }
                    if (null == last_push_date) {
                        last_push_date = new Date(file.lastModified());
                    } else {
                        long modifyDate = file.lastModified();
                        if (modifyDate > last_push_date.getTime()) {
                            last_push_date = new Date(modifyDate);
                        }
                    }
                }
            }else {
            	files.add(realFile);
            }
            return files;
        }
        public static void main(String[] args) throws Exception {
    		Ftp ftp = new Ftp("100.100.100.100", 22, "root", "root");
    		ftp.upload("/home/haha/push", "D:\\abc.jar",false);
    		ftp.closeChannel();
    	}
    }
    

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 183,161
精华内容 73,264
关键字:

javassh

java 订阅