一、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的更多相关文章

  1. 如何使用 RDP 或 SSH 连接到 Azure 虚拟机

    使用 RDP 或 SSH 连接到 Azure 虚拟机 本文简要概述了如何使用远程桌面控制协议 (RDP) 或安全外壳(Secure Shell,SSH)客户端登录 Azure 虚拟机.它还包括要求和故 ...

  2. 针对通过 SSH 连接到 Azure Linux VM 时发生的失败、错误或被拒绝问题进行故障排除

    尝试连接到 Linux 虚拟机 (VM) 时,有多种原因可能会导致安全外壳 (SSH) 错误.SSH 连接失败或被拒绝. 本文帮助用户找出原因并更正问题. 可以使用 Azure 门户.Azure CL ...

  3. java使用ssh连接Linux并执行命令

     方式1:通过设置账号密码和链接地址 maven pom.xml配置: <dependency>         <groupId>com.jcraft</groupId ...

  4. Java 实现 ssh命令 登录主机执行shell命令

    Java 实现 ssh命令 登录主机执行shell命令 1.SSH命令 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SS ...

  5. 使用ssh连接到centos7中docker容器

    任务: 使用ssh连接到centos7中docker容器 实验步骤: 实验环境搭建,详情请看上一篇. 因为docker中容器的ip通常来说是和真机以及centos7的ip不属于一个网段,因此直接访问是 ...

  6. SSH密钥登录让Linux VPS/服务器更安全

    查看 /var/log 登录日志文件,突然发现服务器被人扫描端口在进行暴力攻击 平常登录服务器,都是使用用户密码登录,看来这样的做法并不安全,不得不关闭密码登录了. 总结了一个putty使用密钥自动登 ...

  7. 三、linux环境的搭建1(oracle、ssh、jdk、mysql、samba、tomcat)

    linux环境的搭建1(oracle.ssh.jdk.mysql.samba.tomcat)   网络配置 方案一 tip 1 使用ifconfig : ifconfig eth0 新ip 然后编辑/ ...

  8. 解决无法连接到visual studio开发服务器的问题

    今天vs抽风,调试网站出现下图那样: 然后我开始百度搜索 "无法连接到visual studio开发服务器" 出现很多文章: 打开一篇问题,看了里面的内容, 那个解决办法也不是最好 ...

  9. 使用ssh公钥密钥自动登陆linux服务器

    转自:http://7056824.blog.51cto.com/69854/403669 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远程操作是每天工作的一部分.但随着服务器的 ...

随机推荐

  1. 记github上搭建独立域名的免费博客的方法过程

    前提:拥有github帐号,linux上安装好了git. 全局路线: 1. 设计一个你想要的二级域名,并在git上创建一个以[二级域名.github.com]作为项目名的repository. 过程详 ...

  2. C#中关于DataGridView行和列的背景色-前景色设置

    关于DataGridView行和列的背景色-前景色设置 1.设定DataGridView全部单元格的Style  DataGridView内所有单元格的Style变更,可以使用DataGridView ...

  3. 一个将java事物的非常好的栗子

    地址:http://www.cnblogs.com/davenkin/archive/2013/02/16/java-tranaction-1.html

  4. 基于tornado的爬虫并发问题

    tornado中的coroutine是python中真正意义上的协程,与python3中的asyncio几乎是完全一样的,而且两者之间的future是可以相互转换的,tornado中有与asyncio ...

  5. 微信小程序 confirm(删除提示)提示框,询问框,小程序操作成功提示后跳转

    微信小程序删除处理 没有 confrim 那怎么实现这个效果呢 可以使用小程序里的模态框 代码: wx.showModal({ title: '提示', content: '确定要删除吗?', suc ...

  6. mac os x Server 设置 MIME Types

    最近搞了个 os x Server 把自己mac  配个web 服务器.研究下 ios 企业级应用发布. 网上很多地方都是这个: 对于 OS X Server,将以下 MIME 类型添加到 Web 服 ...

  7. 两种屏幕HUD区域限制的做法(矩形,弧形)

    HUD区域限制算是比较常用到的功能,方形的HUD区域限制多见于小地图,弧形或者椭圆多见于屏幕范围约束. 我没有研究倒角矩形做法,而是将椭圆和矩形进行插值得到一个弧度比较高的形状: 当插值为0时限制范围 ...

  8. fpm制做mysql-5.6.33 rpm包

    增加用户: # groupadd -r mysql # useradd -g mysql -r -s /sbin/nologin -M -d /data/my_db mysql 源码安装mysql-5 ...

  9. angular的uiRouter服务学习(2)

    本篇接着上一篇 angular的uiRouter服务学习(1) 继续讲解uiRouter的用法 本篇主要讲解uiRouter的嵌套状态&嵌套视图 嵌套状态的方法: 状态和状态之间可以互相嵌套, ...

  10. Python Pycharm连接Ubantu Python环境

    由于我习惯在window下开发,但是代码环境布局在Ubantu.使用Python,为了方便程序的调试,尝试在Windows下的Pycharm远程连接到Ubantu虚拟机下的Python环境. 1.准备 ...