springboot项目可以使用远程shell进行监控和管理(在2.0版本就不可以使用了,此处要注意)
使用时先添加spring boot remote shell 的依赖,gradle项目自己去搜一下就好了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-remote-shell</artifactId>
</dependency>
使用时通过
ssh -p 2000 user@localhost登录,其默认端口号是2000,可以在springboot项目资源文件application.properties里修改。登陆后输入help可以获取一系列命令的帮助
#设置用户名
management.shell.auth.simple.user.name=xxx
#设置密码
management.shell.auth.simple.user.password=xxx
其余配置用的时候查一下就可以了
自定义命令需要写一个groovy文件,示例如下,groovy文件要放在项目根目录的commands文件夹下(可以在项目的resource目录下建一个commands文件夹用以存放自定义命令),文件名为xxxx.groovy,
package commands
import com.test.CommandJob
import org.crsh.cli.Command
import org.crsh.cli.Usage
import org.crsh.command.InvocationContext
@Usage("customer command")
class ModifyStockCustomer {
@Usage("customer commandr")
@Command
def apply(InvocationContext context){
//获取任务执行的实际类
def commandJob = context.attributes['spring.beanfactory'].getBean(CommandJob.class)
//读取外部输入确认执行函数
def confirm = context.readLine("确认执行任任务? y/n: ", true)
if (!"y".equalsIgnoreCase(confirm)) {
return "放弃本次修改?想好了再来吧!"
}
try {
//执行任任务,并处理返回结果
def result = commandJob .execute()
if(2 == result){
return "任务执行,请重新执行一次"
}else if(1 == result){
return "执行完毕,( ^_^ )/~~拜拜"
}else{
return "出现未知结果,请重新执行"
}
} catch (Exception e) {
return "任务执行失败,出现异常"+e.getStackTrace()
}
}
}