通过java执行Ansible命令遇到的问题

由于初次使用ansible,遇到一些问题在此记录一下,在网上资料也不多,有时候遇到一些奇葩问题真的毫无头绪。

通过Runtime.getRuntime().exec(cmd); 可以执行ansible ad-hoc命令
比如:ansible all -m ping
但是复杂一些的命令就会执行不了,不能说执行不力,就是执行之后没反应,也不报错,达不到预期的效果
比如:ansible all -m copy -a ‘src=/xxx/xxx/a.log dest=/xxx/xxx/xxx/a.log’
但是这条命令直接在命令行里是可以执行的,就比较郁闷了。
后来查了很多资料发现有把命令拆成命令数组的方式,查了exec方法也接受数组,于是尝试了一下
String[] arr = {“ansible”,“all”,"-m",“copy”,"-a","‘src=/xxx/xxx/a.log dest=/xxx/xxx/xxx/a.log’"}
执行后报了错,有报错就有办法入手排查,最可怕的是什么信息都没有。
报错如下

“msg”: “src (or content) is required”

应该是这条命令的’src=/xxx/xxx/a.log dest=/xxx/xxx/xxx/a.log’没有被正确的解析。再次网上查资料,后来受到这篇文章的启发,
将单引号去掉后可以执行了,开心

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值