在 ubuntu 12.04 中使用 arping 命令

在 ubuntu 12.04 中使用 arping 命令

我正在配置 pgpool 实例以获得 postgresql 服务的 HA。我正在遵循此配置

我找到了一个命令并在控制台中手动运行它:

arping_cmd = 'arping -U $_IP_$ -w 1'

但它不起作用,然后我想找到类似的行为,因为我使用的是 ubuntu 12.04。我该怎么做?

变量 $_IP_$被配置中的ip值替换了,主要问题是命令arping

答案1

在终端中运行 arping 命令时,我得到以下输出:

$ arping -U 192.168.13.1 -w -1
arping: device (option -I) is required.
Usage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination
  -f : quit on first reply
  -q : be quiet
  -b : keep broadcasting, don't go unicast
  -D : duplicate address detection mode
  -U : Unsolicited ARP mode, update your neighbours
  -A : ARP answer mode, update your neighbours
  -V : print version and exit
  -c count : how many packets to send
  -w timeout : how long to wait for a reply
  -I device : which ethernet device to use
  -s source : source ip address
  destination : ask for what ip address

解决方案位于运行命令后的第一行。使用 -I 和 -s 修复您的问题。-I 指定执行 arping 的接口,-s 指定执行 arping 的源。我知道这很糟糕,但请更新您的命令,使其如下所示:

arping_cmd = 'arping -U $_IP_$ -w 1 -I ethX -s SOURCE_IP'

其中 ethx 是您的以太网,SOURCE_IP 是您要从中进行 arping 的 IP。

希望这有帮助,干杯

答案2

我在 Fedora 上遇到了类似的问题:

$ arping 192.168.1.162
arping: Suitable device could not be determined. Please, use option -I.
...

我的解决方案是:

$ arping $ip_addr -I $(ip route get $ip_addr |  cut -d\  -f 3 |xargs)

其中 ip_addr 包含要 ping 的 IP。

将其分解:

ip route get 192.168.1.162

将返回内核针对指定 IP 使用的路由和接口:

192.168.1.162 dev eth1  src 192.168.1.1

然后使用:

cut -d\  -f 3

用分隔符 '\ ' (转义空格)拆分字符串并返回第 3 个子字符串:

eth1

然后使用 xargs 删除界面周围的所有空格。

希望它会有所帮助。

答案3

我得到了与提交者相同的错误,说“-U”不是一个有效的选项:

root@pgpool-2:/var/log# arping -U 192.168.13.1 -w -1
arping: invalid option -- 'U'
ARPing 2.11, by Thomas Habets <[email protected]>
usage: arping [ -0aAbdDeFpqrRuv ] [ -w <us> ] [ -S <host/ip> ]
              [ -T <host/ip ] [ -s <MAC> ] [ -t <MAC> ] [ -c <count> ]
              [ -i <interface> ] <host/ip/MAC | -B>
For complete usage info, use --help or check the manpage.

我在 Ubuntu 14.04 上,手册页中没有提到“-U”:

root@pgpool-2:/var/log# man arping | grep '\-U'
root@pgpool-2:/var/log#

我把我的改成这样:

arping_cmd = 'arping -v $_IP_$ -w 1 -c 100'

基本上来说:

  • -U 不存在,因此删除它
  • 添加 -v 以获取详细输出,这可能会有所帮助
  • 添加 -c 100 以便它最终完成...否则它会永远运行

相关内容