bashrunner - 用Java跑bash脚本

在运维工作中,我们可能经常需要在生产机器运行脚本,比如清理磁盘空间,杀死僵尸进程等等。这个时候你们会怎么做?

我们能不能直接登录机器跑脚本呢?

我相信绝大部分人都不会这么做,原因有:

  • 账号秘密是严格管理的
  • 跑未经验证的命令不安全,毕竟圣人也会出错,如果不小心删库了呢
  • 微服务的世界通常有几十上百台机器,不可能人工逐个机器去跑

我工作的团队是一个崇尚Java的团队,做任何事情都会封装成一个Java的微服务再发布,跑脚本也一样。下面我简单介绍一下这个用java跑脚本的工具bashrunner

1. 下载源码https://github.com/bin9wei/bashrunner

2. 打开工程,可以看到/src/main/resources/scripts目录里有deploy.sh和rollback.sh两个文件。

deploy.sh用于发布的内容,示例代码是在$HOME目录下创建一个测试文件

rollback.sh用于回滚,示例代码是删除新建的测试文件

3. 执行mvn clean install确保工程可打包

4. 带上参数-Daction=deploy运行jar包,会执行deploy.sh的内容

PS D:\sandbox\code\bashrunner\target> java -jar -Daction=deploy bashrunner-1.0-SNAPSHOT.jar
17:36:16.430 [Thread-0] INFO  org.example.bashrunner.Bash - Deploy completed!

可以看到testBash.txt确实被创建了

PS D:\sandbox\code\bashrunner> ls C:\Users\bin9w testBash.txt


    目录: C:\Users\bin9w


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/11/15     17:36              8 testBash.txt

5. 带上参数-Daction=rollback运行jar包,会执行rollback.sh的内容,可以看到testBash.txt被删除了,即回滚成功。

PS D:\sandbox\code\bashrunner\target> java -jar -Daction=rollback bashrunner-1.0-SNAPSHOT.jar
17:46:26.091 [Thread-0] INFO  org.example.bashrunner.Bash - Rollback completed!
PS D:\sandbox\code\bashrunner\target> ls C:\Users\bin9w testBash.txt
PS D:\sandbox\code\bashrunner\target>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值