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 服务器上登陆进行远程操作是每天工作的一部分.但随着服务器的 ...
随机推荐
- Struts2之数据标签(二)
Struts2之数据标签(一):http://blog.csdn.net/u012561176/article/details/46848817 1.action标签:使用此标签能够同意在JSP页面中 ...
- php把采集内容中图片地址下载并替换成本地地址
把字符串中地址全部获取到一个数组我们利用preg_match_all函数 代码如下 复制代码 <?php$str='<p><img border="0" s ...
- Intellij idea 配置热部署
1. 采用外部tomcat的配置 1)打开右上角Run的Edit Configuration进入Tomcat配置选项页面 2)将On frame deactivation选项更改为 Update ...
- Android 获取自带浏览器上网记录
先是搜索了一下,在manifest里添加 <uses-permission android:name="com.android.browser.permission.READ_HIST ...
- 常用代码之三:jQuery为按钮绑定事件的代码
如题,比如有一个按钮:<input type='button' class='btn-text' id ='addHtml' value='新增' /> 为它添加onclick事件的代码: ...
- django 自动化测试的故障排查
[问题背景] django使用mysql做为后台数据库.在使用django的自动化测试命令test时报如下错误 python3 manage.py test polls Creating test d ...
- windows 64位下,React-Native环境搭建详解 (Android)
React-Native环境搭建需要: 1.安装Java JDK 2.安装Android Studio 3.安装node.js 4.安装git 5.安装Python 2.x (注意目前不支持Pytho ...
- centos 7部署graphite(nginx+uwsgi)
http://www.debugrun.com/a/o5qyP9W.htmlhttp://blog.csdn.net/tsingfu1986/article/details/44239503 http ...
- 防CSRF攻击:一场由重复提交的问题引发的前端后端测试口水战
重复提交,这是一直以来都会存在的问题,当在网站某个接口调用缓慢的时候就会有可能引起表单重复提交的问题,不论form提交,还是ajax提交都会有这样的问题,最近在某社交app上看到这么一幕,这个团队没有 ...
- Atitit codeblock c++开发环境建立attilax总结
Atitit codeblock c++开发环境建立attilax总结 1.1. C++的重要意义 1 1.2. 项目ide的选项 1 1.3. 安装MinGW (基于GCC的C++编译器) 50 ...