一、前言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

JSch是SSH2的纯Java实现 。

JSch允许您连接到sshd服务器并使用端口转发,X11转发,文件传输等,您可以将其功能集成到您自己的Java程序中。JSch获得BSD格式许可证。

最初,我们开发这些东西的动机是允许我们的纯Java X服务器 WiredX的用户享受安全的X会话。所以,我们的努力主要是为了实现用于X11转发的SSH2协议。当然,我们现在也有兴趣添加端口转发,文件传输,终端仿真等其他功能。

官网上有很详细说明和例子:

官网:http://www.jcraft.com/jsch/

----------------------------------------------------------------------------------------------------------------------------------

二、 实现demo

1. 工具类:

  • USER:所连接的Linux主机登录时的用户名
  • PASSWORD:登录密码
  • HOST:主机地址
  • DEFAULT_SSH_PROT=端口号,默认为22
package util;import java.io.InputStream;
import java.io.OutputStream;
import java.util.concurrent.TimeUnit;import com.jcraft.jsch.Channel;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;public class SSHUtil {private Channel channel;private Session session = null;private int timeout = 60000;public SSHUtil(final String ipAddress, final String username, final String password) throws Exception {JSch jsch = new JSch();this.session = jsch.getSession(username, ipAddress, 22);this.session.setPassword(password);this.session.setConfig("StrictHostKeyChecking", "no");this.session.setTimeout(this.timeout);this.session.connect();this.channel = this.session.openChannel("shell");this.channel.connect(1000);}public String runShell(String cmd, String charset) throws Exception {String temp = null;InputStream instream = null;OutputStream outstream = null;try {instream = this.channel.getInputStream();outstream = this.channel.getOutputStream();outstream.write(cmd.getBytes());outstream.flush();TimeUnit.SECONDS.sleep(2);if (instream.available() > 0) {byte[] data = new byte[instream.available()];int nLen = instream.read(data);if (nLen < 0) {throw new Exception("network error...桌面有错误");}temp = new String(data, 0, nLen, "UTF-8");}}  finally {outstream.close();instream.close();}return temp;}public void close() {this.channel.disconnect();this.session.disconnect();}
}

2. 调用:


import util.SSHUtil;public class Test {public static void main(String[] args) throws Exception{SSHUtil sshUtil = new SSHUtil("xx.xx.xx.2", "root", "xxxxxng");String res = sshUtil.runShell("cd xxx\n ps -ef | grep java | awk '{print $2}' | xargs kill -9 \n nohup java -jar xxxx-0.0.1-SNAPSHOT.jar & \n", "utf-8");//重启数据库//String res = sshUtil.runShell("docken restart JY_mysql \n", "utf-8");//String res = sshUtil.runShell("nohup java -jar forlovehome-0.0.1-SNAPSHOT.jar & \n", "utf-8");// String res = sshUtil.runShell("/usr/apache-tomcat-7.0.47/bin/startup.sh\n", "utf-8");System.out.println(res);sshUtil.close();}
}

参考:http://www.importnew.com/22322.html

http://www.jcraft.com/jsch/

JSch - Java Secure Channel : java 代码实现服务器远程操作相关推荐

  1. JSch:Java Secure Channel -- java 代码实现 ssh 远程操作

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. JSch 是SSH2的一个纯Java实现. 它允许你连接到一个 sshd 服务器,使用端口转发,X1 ...

  2. java ssh jsch_JSch-用java实现服务器远程操作

    介绍 前段时间接了一个比较特殊的需求,需要做一个用于部署服务的服务.主要是将一个k8s服务集群部署到远端的服务器上,具体服务器的连接信息会通过接口传入. 本来部署是人工来完成的,无非是将一些必须的文件 ...

  3. linux远程 java jar包_给Linux服务器远程安装jdk

    给Linux服务器远程安装jdk 1.下载jdk 2.上传jar包到Linux服务器上 ​ 2.1.服务器上新建一个JAVA文件,存放jdk文件 # mkdir /usr/java ​ 2.2.本地上 ...

  4. 火狐浏览器中打开java_Ubuntu下通过Firefox Opera Chromium浏览器直接执行java应用程序(打开java jnlp文件)实现在服务器远程虚拟控制台完成远程管理的方法...

    远程虚拟控制台依赖于java运行环境(jre),在通过浏览器打开链接前,系统必须安装jre环境,远程管理控制台其实就是一个java程序,打开相应的网站会下载一个jnlp(java网络加载协议)的文件, ...

  5. JAVA ftps设置_Java使用JSCH实现对FTPS服务器文件操作

    SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式.SF ...

  6. 文件系统之-JAVA Sftp远程操作:

    转载:http://blog.csdn.net/lee272616/article/details/52789018 java远程操作文件服务器(linux),使用sftp协议 版本会持续更新, 当前 ...

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

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

  8. java代码修改服务器自动重启

    Tomcat Context配置 当我们完成一个Web项目,不想部署在Tomcat的app目录下.但是想通过Tomcat来访问,可以修改server.xml文件 在<Host>与</ ...

  9. java sftp 公开键设定_如何使用JSch SFTP库解析Java UnknownHostKey?

    我正在运行一个java程序,我使用Java SFTP将文件从一个文件夹传输到另一个文件夹.我遇到的问题是我在Java SFTP中遇到以下错误(使用JSch): C:\ Oracle \ Middlew ...

最新文章

  1. 调整JVM堆内存解决OutOfMemoryError
  2. vue案例 - vue-awesome-swiper实现h5滑动翻页效果
  3. RabbitMQ 和 Kafka 到底怎么选?
  4. Selenium 与 PhantomJS
  5. grafana 画拓扑图 能不能_Grafana之ImageIt实现动态可感知网络拓扑(第十七篇)
  6. 谈谈神经网络的大规模训练优化
  7. Numpy系列(四)常用数学统计函数
  8. 第十七天 PYTHON学习
  9. Nagios监控Linux主机
  10. Atitit xml命名空间机制
  11. 面试java程序员hr问你职业规划,2022最新
  12. matlab一维插值extrap,MSC Patran中基于Matlab插值函数的多场创建
  13. 苹果CMS V10后台登录验证码错误解决方法
  14. python之轻量级框架flask开发接口,操作数据库
  15. iphone 程购买实现
  16. 05、Python中转义字符与字符串
  17. 如何为窗体应用程序显示控制台
  18. css内边距属性、外边距属性
  19. 股票爬虫(java爬取东方财富)
  20. Matlab绘制隐函数总结-二维和三维

热门文章

  1. 一步步编写操作系统 13 栈
  2. linux中sybase删除数据库,Linux_Sybase ASE数据库的常见问题解答,1 数据库占用磁盘空间的形式 - phpStudy...
  3. mysql数据库字符集设置_查看和设置MySQL数据库字符集
  4. html盒子全部蓝色,彻底弄懂CSS盒子模式之五
  5. 【必知必会】pro文件及常用配置
  6. Python 数据分析三剑客之 Pandas(六):GroupBy 数据分裂、应用与合并
  7. 【Python CheckiO 题解】House Password
  8. 【LeetCode-SQL每日一练】—— 1179. 重新格式化部门表
  9. 三星sec.android.soagent,3.0降级2.5教程
  10. c语言 有趣的代码,分享一段有趣的小代码