在剧本中对本地主机使用 ping

Using ping on localhost in a playbook

我无法 运行 来自 ansible 主机的 ping 命令(使用 localhost,见下文)。

我构建了一个简单的剧本来 运行 ping 使用命令模块:

---
#
- name: GET INFO
  hosts: localhost

  tasks:
    - name: return motd to registered var
      command: "/usr/bin/ping 10.39.120.129"
      register: mymotd

    - name: debug output
      debug: var=mymotd

但是,我这个错误:"ping: socket: Operation not permitted"

似乎存在权限问题。但是,查看 /usr/bin 目录,看起来 ping 对我来说是可执行的:

    "-rwxr-xr-x.   1 root root      66176 Aug  4  2017 ping", 

我无法成为或使用 sudo,似乎塔已为此锁定,我也无权更改它。

有人有什么建议吗?是什么让我想到这个,是因为我正在尝试 运行 ping 自定义模块并遇到类似的问题。

谢谢

ping 二进制文件需要设置 SETUID 位才能完全 运行 作为普通用户使用,这在您的服务器上不是这种情况。

您需要 运行 作为 root:

chmod u+s $(which ping)

如果您没有 root 访问权限并且无法由管理员完成此操作,恐怕您会被卡住...除非您尝试 ping 的服务器是您可以使用 ansible 管理的机器。

在后一种情况下,您可以使用 ping module。它不是文档中所说的 ICMP ping。看看这个能不能用在你的情况下。


我能找到的关于 ping 权限的众多参考之一:https://ubuntuforums.org/showthread.php?t=927709