On this page
50. Monitoring and management using a remote shell (deprecated)
Spring Boot supports an integrated Java shell called ‘CRaSH’. You can use CRaSH to ssh
or telnet
into your running application. To enable remote shell support, add the following dependency to your project:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-remote-shell</artifactId>
</dependency>
Note | |
---|---|
The remote shell is deprecated and will be removed in Spring Boot 2.0. |
Tip | |
---|---|
If you want to also enable telnet access you will additionally need a dependency on |
Note | |
---|---|
CRaSH requires to run with a JDK as it compiles commands on the fly. If a basic |
By default the remote shell will listen for connections on port 2000
. The default user is user
and the default password will be randomly generated and displayed in the log output. If your application is using Spring Security, the shell will use the same configuration by default. If not, a simple authentication will be applied and you should see a message like this:
Using default password for shell access: ec03e16c-4cf4-49ee-b745-7c8255c1dd7e
Linux and OSX users can use ssh
to connect to the remote shell, Windows users can download and install PuTTY .
$ ssh -p 2000 [email protected]
[email protected] 's password:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.9.RELEASE) on myhost
Type help
for a list of commands. Spring Boot provides metrics
, beans
, autoconfig
and endpoint
commands.
You can use the management.shell.auth.simple.user.name
and management.shell.auth.simple.user.password
properties to configure custom connection credentials. It is also possible to use a ‘Spring Security’ AuthenticationManager
to handle login duties. See the CrshAutoConfiguration
and ShellProperties
Javadoc for full details.
The remote shell can be extended in a number of interesting ways.
You can write additional shell commands using Groovy (see the CRaSH documentation for details). Due to limitations in CRaSH’s Java compiler, commands written in Java are not supported. By default Spring Boot will search for commands in the following locations:
classpath*:/commands/**
classpath*:/crash/commands/**
Tip | |
---|---|
You can change the search path by settings a |
Note | |
---|---|
If you are using an executable archive, any classes that a shell command depends upon must be packaged in a nested jar rather than directly in the executable jar or war. |
Here is a simple ‘hello’ command that could be loaded from 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 adds some additional attributes to InvocationContext
that you can access from your command:
Attribute Name | Description |
---|---|
|
The version of Spring Boot |
|
The version of the core Spring Framework |
|
Access to the Spring |
|
Access to the Spring |
In addition to new commands, it is also possible to extend other CRaSH shell features. All Spring Beans that extend org.crsh.plugin.CRaSHPlugin
will be automatically registered with the shell.
For more information please refer to the CRaSH reference documentation .