远程服务器重启,Shell脚本调用工具类

亲测脚本调用工具类,demo以windows脚本bat和cmd为例。
设计目的:实现远程重启服务的控制操作。
前置条件:需要在E盘新建测试脚本invokingMyMethod.cmd,
模拟脚本内容为:

@echo on
rem @echo E:\自学实验室
rem cmd
@echo off
color 0f
title 查看本机 IP 配置信息
goto start
ipconfig>E:\test.txt  命令行返回值输出到系统文件中 
只用“>”是覆盖现有的结果,每一个命令结果会覆盖现有的txt文件,如果要保存很多命令结果的话,就需要建立不同文件名的txt文件。
要在同一个txt文件里面追加cmd命令结果,用“>>”替换“>” 就可以了.
:start
ipconfig
echo.
pause

下面是shell工具类:ShellUtil

package testCommonTool;

import java.io.*;

public class ShellUtil {
    public static void main(String[] args) throws Exception
    {
        //一次性执行多个命令
        String shStr = "cmd /c \"cd/d e:\\ && dir && invokingMyMethod.cmd\"";
        runShell(shStr);
    }

    public static String runShell(String cmd) throws Exception
    {
        Process process;
        try
        {
            Runtime runtime = Runtime.getRuntime();

            System.out.println("开始执行...");
            //process = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c",cmd});
            process = runtime.exec(cmd);
            //打印执行的输出结果
            InputStream is = process.getInputStream();
            InputStreamReader isr = new InputStreamReader(is, "gbk"); //gbk:解决输出乱码
            BufferedReader br = new BufferedReader(isr);
            String line;
            while ((line = br.readLine()) != null)
            {
                System.out.println(line);
            }
            process.waitFor();
            is.close();
            isr.close();
            br.close();
            process.destroy();
        } catch (IOException e)
        {
            e.printStackTrace();
            System.out.println(e.getMessage());
        }
        return "opertion is ok!";
    }

    /**
     * 启动Tomcat程序
     *
     * @param programPath
     * @param batName
     *
    //启动Tomcat
    runbat("F:\apache-tomcat-7.0.54", "bin\\startup.bat");
    //关闭Tomcat
    runbat("F:\apache-tomcat-7.0.54", "bin\\shutdown.bat");
     */
    public static void runbat(String programPath, String batName){
        Runtime rt = Runtime.getRuntime();
        Process ps = null;
        try {
            // 提示
            // The CATALINA_HOME environment variable is not defined correctly
            // This environment variable is needed to run this program
            //  ps = rt.exec("cmd.exe /c " + batName);

            ps = rt.exec("cmd /c " + programPath + File.separator + batName, null, new File(programPath));

            InputStream is = ps.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            ps.waitFor();
            is.close();
            reader.close();
            ps.destroy();
        } catch (Exception e) {

            e.printStackTrace();
        }

    }
}

实现远程重启tomcat服务器还需要针对个人实际服务器路径修改programPath参数,另外,需要注意,远程重启需要另外搭建一个服务器,同时修改端口,以避免启动时端口冲突,将本文给出的工具类以及对应页面调用部署到新的服务器中,以最终实现远程服务器重启。

猜你喜欢

转载自blog.csdn.net/u011283469/article/details/84988423
今日推荐