【发布时间】:2022-09-25 17:12:13
【问题描述】:
我正在尝试运行以下运行 \"status.sh\" 脚本的 ansible ad-hoc 命令:
ansible host -m script -a \'/path/status.sh\' -u root -i inventory
该脚本只是获取目标主机上服务的状态,如下所示:
service_1=$(ls /etc/systemd/system | grep -e jboss | awk -F \' \' \'{print $1}\')
if [ ! -z \"$service_1\" ] //if service exists
then
systemctl status $service_1
else
echo \"There is No $Service_1 Here !\"
fi
运行临时命令时输出太多,我只想将输出限制为stdout_lines 或stdout,有没有办法在不使用debug 或任何创建特定剧本的情况下做到这一点其他模块只需添加一个选项或将输出管道传输到 grep?
-
因为您的实际示例和用例目前看起来像是 Ansible 的反模式并且应该避免,您能解释一下为什么要寻找 \"...一种无需使用“调试”或任何其他模块创建特定剧本的方法,只需添加一个选项或将输出管道传输到 grep ...\"?
-
Change the ad-hoc command line stout callback plugin to json。使用像
jq这样的工具过滤输出是微不足道的。 -
感谢@U880D 的输入,我只是想知道是否有办法这样做,我知道可以通过注册输出然后使用“调试”模块打印想要的部分来使用剧本,我\'已经尝试了提供的答案并且它有效。
-
感谢@Zeitounator 的输入,我只是想知道是否有一种方法可以在不使用剧本或任何插件的情况下仅通过使用本机选项来做到这一点,我已经尝试了提供的答案并且它有效。