gpt4 book ai didi

ansible - 有什么方法可以让 Ansible 完全按照我给出的命令执行命令吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:24 26 4
gpt4 key购买 nike

我有一个简单的命令,使用 grep 和 perl 正则表达式从 ps -ef | 中提取 catalina.home grep java 输出如下。

ps -ef |grep java |grep -Po "Dcatalina.home=[^\s]*\s"

当我执行此命令时,它将仅从输出中提取 cataline.home 部分,如下所示。

# ps -ef |grep java |grep -Po "Dcatalina.home=[^\s]*\s"
Dcatalina.home=/usr/share/apache-tomcat-7.0.32

但是当我通过 Ansible 发出相同的命令时,它发送到服务器ps -ef |grep java |grep -Po/\"Dcatalina.home=[^/\\s]*\/\s\" 并且没有输出。

来自 Ansible 的错误

FAILED! => {"changed": true, "cmd": "cd $(ps -ef |grep java |grep -Po \"Dcatalina.home=[^\\s]*\\s\" | awk -F'=' '{print $2}') ; bash bin/version.sh | grep 'Server version:'", "delta": "0:00:00.080606", "end": "2017-08-17 03:57:02.816848", "failed": true, "rc": 1, "start": "2017-08-17 03:57:02.736242", "stderr": "/bin/sh: line 0: cd: [^\\s]*\\s\": No such file or directory\nbash: bin/version.sh: No such file or directory", "stderr_lines": ["/bin/sh: line 0: cd: [^\\s]*\\s\": No such file or directory", "bash: bin/version.sh: No such file or directory"], "stdout": "", "stdout_lines": []}

有什么方法可以告诉 Ansible 完全按照我给出的命令执行吗?

最佳答案

这是它对我的作用:

$ ansible server-1.infra.local -i server/hosts -m shell -a 'ps -ef |grep java | grep -Po "Dcatalina.home[^\s]*\s"' -K --become-method=sudo -b -k

SSH password:
SUDO password[defaults to SSH password]:
server-1.infra.local | SUCCESS | rc=0 >>
Dcatalina.home=/usr/local/tomcat

关于ansible - 有什么方法可以让 Ansible 完全按照我给出的命令执行命令吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45729829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com