Java通过ssh连接到Linxu和Windos服务器远程启动Tomcat
一、Linxu服务器远程启动tomcat
1、首先确保linxu服务器上的tomcat jdk等必要软件正确安装,并且可以正常启动。
2、编写Java SSH工具类。
相关jar包:
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.53</version>
<scope>provided</scope>
</dependency>
工具类:
package com.framework.code.controller; 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();
}
}
SSH工具类
测试:
public class SSHHelper {
public static void main(final String[] args) throws Exception {
//shutdown.sh
SSHUtil sshUtil = new SSHUtil("136.16.19.82", "root", "123456");
String res = sshUtil.runShell("/usr/apache-tomcat-7.0.47/bin/startup.sh\n", "utf-8");
System.out.println(res);
sshUtil.close();
}
}
一定要注意的是 命令结尾一定要加\n [\n代表命令行里敲回车]
例如启动tomcat 可以写成绝对路径
/usr/apache-tomcat-7.0.47/bin/startup.sh\n
还可以写成这样
cd /usr/apache-tomcat-7.0.47/bin/\n./startup.sh\n
相当于在命令行里先 cd /usr/apache-tomcat-7.0.47/bin 回车进入到tomcat的bin目录。
然后在通过./startup.sh启动tomcat 这里的\n就相当于回车了。
二、Windows服务器远程启动tomcat
1、首先下载ssh服务器段软件 http://www.freesshd.com/?ctt=download 我用的是freeSSHd.exe
2、安装软件,前面几部略过,这一步提示是否生成秘钥,选择是。

3、这一步提示是否设置为系统服务,这里随便。

4、打开软件进行设置,如果有绿色的已经开启的服务,先都把他们关闭了。

5、创建用户,设置密码。

6、配置SSH链接。

7、启动SSH服务。

8、用上面的Java客户端代码即可发送脚本到服务器上执行了。
如果提示链接密码错误链接不上,就从安装路径打开软件并重启服务。D:\Program\freeSSHd\FreeSSHDService.exe
多试几次就好了,不知道是不是软件的BUG。
public static void main(final String[] args) throws Exception {
//shutdown.sh
SSHUtil sshUtil = new SSHUtil("121.92.115.217", "root", "vstar123");
//String res = sshUtil.runShell("cd /usr/apache-tomcat-7.0.47/bin/\n./startup.sh\n", "utf-8");
String res = sshUtil.runShell("D:\\apache-tomcat-7.0.35\\bin\\startup.bat \n", "utf-8");
//String res = sshUtil.runShell("echo %CATALINA_HOME% \n", "utf-8");
System.out.println(res);
sshUtil.close();
}
如果提示缺少tomcat环境变量,则需要在服务器上配置tomcat的环境变量。
CATALINA_HOME = D:\Java\Software\apache-tomcat-7.0.47 配置到这种路径即可,然后需要重启服务器让环境变量生效,不然读不到。
D:\Program\freeSSHd>D:\Java\Software\apache-tomcat-7.0.47\bin\startup.bat
The CATALINA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
Java通过ssh连接到Linxu和Windos服务器远程启动Tomcat的更多相关文章
- 如何使用 RDP 或 SSH 连接到 Azure 虚拟机
使用 RDP 或 SSH 连接到 Azure 虚拟机 本文简要概述了如何使用远程桌面控制协议 (RDP) 或安全外壳(Secure Shell,SSH)客户端登录 Azure 虚拟机.它还包括要求和故 ...
- 针对通过 SSH 连接到 Azure Linux VM 时发生的失败、错误或被拒绝问题进行故障排除
尝试连接到 Linux 虚拟机 (VM) 时,有多种原因可能会导致安全外壳 (SSH) 错误.SSH 连接失败或被拒绝. 本文帮助用户找出原因并更正问题. 可以使用 Azure 门户.Azure CL ...
- java使用ssh连接Linux并执行命令
方式1:通过设置账号密码和链接地址 maven pom.xml配置: <dependency> <groupId>com.jcraft</groupId ...
- Java 实现 ssh命令 登录主机执行shell命令
Java 实现 ssh命令 登录主机执行shell命令 1.SSH命令 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SS ...
- 使用ssh连接到centos7中docker容器
任务: 使用ssh连接到centos7中docker容器 实验步骤: 实验环境搭建,详情请看上一篇. 因为docker中容器的ip通常来说是和真机以及centos7的ip不属于一个网段,因此直接访问是 ...
- SSH密钥登录让Linux VPS/服务器更安全
查看 /var/log 登录日志文件,突然发现服务器被人扫描端口在进行暴力攻击 平常登录服务器,都是使用用户密码登录,看来这样的做法并不安全,不得不关闭密码登录了. 总结了一个putty使用密钥自动登 ...
- 三、linux环境的搭建1(oracle、ssh、jdk、mysql、samba、tomcat)
linux环境的搭建1(oracle.ssh.jdk.mysql.samba.tomcat) 网络配置 方案一 tip 1 使用ifconfig : ifconfig eth0 新ip 然后编辑/ ...
- 解决无法连接到visual studio开发服务器的问题
今天vs抽风,调试网站出现下图那样: 然后我开始百度搜索 "无法连接到visual studio开发服务器" 出现很多文章: 打开一篇问题,看了里面的内容, 那个解决办法也不是最好 ...
- 使用ssh公钥密钥自动登陆linux服务器
转自:http://7056824.blog.51cto.com/69854/403669 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远程操作是每天工作的一部分.但随着服务器的 ...
随机推荐
- JetBrains PyCharm专业版激活
PyCharm最新2018激活码 激活时选择License server 填入 http://idea.imsxm.com 然后点击Active即可 PS:在线激活有一个过期时间,这个时间一过就必须再 ...
- [转]Intellij idea创建javaWeb以及Servlet简单实现
准备:1. 安装jdk1.72. 安装tomcat1.8 一.创建并设置javaweb工程 1.创建javaweb工程File --> New --> Project... 设置工程名字: ...
- Jmeter 线程组、运行次数参数化
Jmeter的jmx文件保存了线程数和运行次数等参数,这个参数可以在命令行中传入参数的方式来修改数值 步骤如下 1.生成线程和运行次数的参数 Jmeter选项中函数助手对话框,选中__P参数,这个参数 ...
- 根据Rowkey从HBase中查询数据
/** * @Title: queryData * @Description: 从HBase查询出数据 * @author xxxx * @param tableName * 表名 * @param ...
- mysql -- 优化之ICP(index condition pushdown)
一.为了方法说明ICP是什么.假设有如下的表和查询: create table person( id int unsigned auto_increment primary key, home_add ...
- kafaka学习
创建一个topic: [root@hdp1 bin]# ./kafka-topics. --replication-factor --partitions --topic justin Created ...
- django admin 导出数据简单示例
借鉴博客:https://www.lijinlong.cc/django/djxs/2101.html 具体代码实现: class TipReport(admin.ModelAdmin): actio ...
- 处理 ASP.NET 中的异常:无法在发送 HTTP 标头之后进行重定向。
因为在 Global.asax 中的 Application_Error 事件中添加了统一的错误处理,其中会有 Redirect 重定向到错误页面. 但是有可能有些情况下已经进行过其它重定向操作,所以 ...
- Android调试桥-Android Debug Birdge详解
原文:http://android.eoe.cn/topic/summary Android调试桥-Android Debug Birdge Android调试桥(adb)是一个多功能的命令行功具,它 ...
- 浅析PCIe链路LTSSM状态机
我们知道,在PCIe链路可以正常工作之前,需要对PCIe链路进行链路训练,在这个过程中,就会用LTSSM状态机.LTSSM全称是Link Training and Status State Machi ...