JSch - Java Secure Channel : java 代码实现服务器远程操作
一、前言
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
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 代码实现服务器远程操作相关推荐
- JSch:Java Secure Channel -- java 代码实现 ssh 远程操作
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. JSch 是SSH2的一个纯Java实现. 它允许你连接到一个 sshd 服务器,使用端口转发,X1 ...
- java ssh jsch_JSch-用java实现服务器远程操作
介绍 前段时间接了一个比较特殊的需求,需要做一个用于部署服务的服务.主要是将一个k8s服务集群部署到远端的服务器上,具体服务器的连接信息会通过接口传入. 本来部署是人工来完成的,无非是将一些必须的文件 ...
- linux远程 java jar包_给Linux服务器远程安装jdk
给Linux服务器远程安装jdk 1.下载jdk 2.上传jar包到Linux服务器上 2.1.服务器上新建一个JAVA文件,存放jdk文件 # mkdir /usr/java 2.2.本地上 ...
- 火狐浏览器中打开java_Ubuntu下通过Firefox Opera Chromium浏览器直接执行java应用程序(打开java jnlp文件)实现在服务器远程虚拟控制台完成远程管理的方法...
远程虚拟控制台依赖于java运行环境(jre),在通过浏览器打开链接前,系统必须安装jre环境,远程管理控制台其实就是一个java程序,打开相应的网站会下载一个jnlp(java网络加载协议)的文件, ...
- JAVA ftps设置_Java使用JSCH实现对FTPS服务器文件操作
SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式.SF ...
- 文件系统之-JAVA Sftp远程操作:
转载:http://blog.csdn.net/lee272616/article/details/52789018 java远程操作文件服务器(linux),使用sftp协议 版本会持续更新, 当前 ...
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...
1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...
- java代码修改服务器自动重启
Tomcat Context配置 当我们完成一个Web项目,不想部署在Tomcat的app目录下.但是想通过Tomcat来访问,可以修改server.xml文件 在<Host>与</ ...
- java sftp 公开键设定_如何使用JSch SFTP库解析Java UnknownHostKey?
我正在运行一个java程序,我使用Java SFTP将文件从一个文件夹传输到另一个文件夹.我遇到的问题是我在Java SFTP中遇到以下错误(使用JSch): C:\ Oracle \ Middlew ...
最新文章
- 调整JVM堆内存解决OutOfMemoryError
- vue案例 - vue-awesome-swiper实现h5滑动翻页效果
- RabbitMQ 和 Kafka 到底怎么选?
- Selenium 与 PhantomJS
- grafana 画拓扑图 能不能_Grafana之ImageIt实现动态可感知网络拓扑(第十七篇)
- 谈谈神经网络的大规模训练优化
- Numpy系列(四)常用数学统计函数
- 第十七天 PYTHON学习
- Nagios监控Linux主机
- Atitit xml命名空间机制
- 面试java程序员hr问你职业规划,2022最新
- matlab一维插值extrap,MSC Patran中基于Matlab插值函数的多场创建
- 苹果CMS V10后台登录验证码错误解决方法
- python之轻量级框架flask开发接口,操作数据库
- iphone 程购买实现
- 05、Python中转义字符与字符串
- 如何为窗体应用程序显示控制台
- css内边距属性、外边距属性
- 股票爬虫(java爬取东方财富)
- Matlab绘制隐函数总结-二维和三维
热门文章
- 一步步编写操作系统 13 栈
- linux中sybase删除数据库,Linux_Sybase ASE数据库的常见问题解答,1 数据库占用磁盘空间的形式 - phpStudy...
- mysql数据库字符集设置_查看和设置MySQL数据库字符集
- html盒子全部蓝色,彻底弄懂CSS盒子模式之五
- 【必知必会】pro文件及常用配置
- Python 数据分析三剑客之 Pandas(六):GroupBy 数据分裂、应用与合并
- 【Python CheckiO 题解】House Password
- 【LeetCode-SQL每日一练】—— 1179. 重新格式化部门表
- 三星sec.android.soagent,3.0降级2.5教程
- c语言 有趣的代码,分享一段有趣的小代码