2

我正在尝试使用 ansible 列出使用率超过 50% 的挂载点。我在 AWK 上遇到错误。

如果我单独运行此命令,它可以工作

df -P | awk '$5 >=90 {print}'
Filesystem     1024-blocks     Used Available Capacity Mounted on
tmpfs              2097152  1948868    148284      93% /tmp

或者

df -P | grep /tmp | awk '$5 >=90 {print}'
tmpfs              2097152  1948832    148320      93% /tmp

如果我将相同的命令放在 ansible shell 中,它会失败

这里:

ansible all -i <hostname>, -m shell -a "df -P | grep /tmp | awk '$5 >=90 {print}'"
SSH password:
SUDO password[defaults to SSH password]:
<hostname> | FAILED | rc=1 >>
awk:  >=90 {print}
awk:  ^ syntax error
grep: write error: Broken pipe

有没有办法做到这一点?有一个更好的方法吗?可能是使用的因素?

4

2 回答 2

0

@ user3330284:您可以删除 grep 的使用并尝试关注(虽然没有测试过):

ansible all -i <hostname>, -m shell -a "df -P  | awk '/\/tmp/{if(\$5 >=50){print}}'"
于 2017-02-15T20:36:06.063 回答
0

感谢康斯坦丁·苏沃洛夫,您的回答完美无缺。

ansible all -i <hostname>, -m shell -a "df -P | grep /tmp | awk '\$5 >=50 {print}'"
SSH password:
SUDO password[defaults to SSH password]:
<hostname> | SUCCESS | rc=0 >>
/dev/sda8           944808      55484     840496       7% /var/tmp
tmpfs              2097152    1858344     238808      89% /tmp
于 2017-02-15T20:25:21.410 回答