50. 使用远程 Shell 进行监视和 Management(不建议使用)

Spring Boot 支持称为“ CRaSH”的集成 Java Shell。您可以使用 CRaSH sshtelnet进入正在运行的应用程序。要启用远程 Shell 程序支持,请将以下依赖项添加到您的项目中:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-remote-shell</artifactId>
 </dependency>

Note

远程 Shell 已弃用,并将在 Spring Boot 2.0 中删除。

Tip

如果您还希望启用 telnet 访问,则还需要依赖org.crsh:crsh.shell.telnet

Note

CRaSH 需要与 JDK 一起运行,因为它需要即时编译命令。如果基本的help命令失败,则您可能正在使用 JRE 运行。

50.1 连接到远程 Shell

默认情况下,远程 Shell 程序将监听端口2000上的连接。默认用户为user,默认密码将随机生成并显示在日志输出中。如果您的应用程序使用的是 Spring Security,则默认情况下 Shell 将使用相同的配置。如果没有,将应用简单的身份验证,您应该看到如下消息:

Using default password for shell access: ec03e16c-4cf4-49ee-b745-7c8255c1dd7e

Linux 和 OSX 用户可以使用ssh连接到远程 Shell,Windows 用户可以下载并安装PuTTY

$ ssh -p 2000 [emailprotected]

[emailprotected]'s password:
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v1.5.9.RELEASE) on myhost

键入help以获取命令列表。 Spring Boot 提供了metricsbeansautoconfigendpoint命令。

50.1.1 远程 Shell 凭据

您可以使用management.shell.auth.simple.user.namemanagement.shell.auth.simple.user.password属性来配置自定义连接凭据。也可以使用“ Spring Security” AuthenticationManager来处理登录职责。有关完整的详细信息,请参见CrshAutoConfigurationShellProperties Javadoc。

50.2 扩展远程 Shell

可以通过许多有趣的方式扩展远程 Shell。

50.2.1 远程 Shell 命令

您可以使用 Groovy 编写其他 Shell 命令(有关详细信息,请参见 CRaSH 文档)。由于 CRaSH 的 Java 编译器的限制,因此不支持用 Java 编写的命令。默认情况下,Spring Boot 将在以下位置搜索命令:

Tip

您可以通过设置shell.command-path-patterns属性来更改搜索路径。

Note

如果使用的是可执行归档文件,那么 shell 命令依赖的任何类都必须打包在嵌套 jar 中,而不是直接打包在可执行 jar 或 war 中。

这是一个简单的“ hello”命令,可以从src/main/resources/commands/hello.groovy加载

package commands

import org.crsh.cli.Command
import org.crsh.cli.Usage
import org.crsh.command.InvocationContext

class hello {

    @Usage("Say Hello")
    @Command
    def main(InvocationContext context) {
        return "Hello"
    }

}

Spring Boot 向InvocationContext添加了一些其他属性,您可以从命令中访问它们:

Attribute Name Description
spring.boot.version Spring Boot 的版本
spring.version 核心 Spring 框架的版本
spring.beanfactory 进入 SpringBeanFactory
spring.environment 进入 SpringEnvironment

50.2.2 远程 Shell 插件

除了新命令,还可以扩展其他 CRaSH Shell 功能。所有扩展为org.crsh.plugin.CRaSHPlugin的 Spring Bean 都会自动在 shell 中注册。

有关更多信息,请参阅CRaSH 参考文档

上一章 首页 下一章