Использование команды arping в Ubuntu 12.04

Я настраиваю экземпляр pgpool для получения высокой доступности сервисов postgresql. Я следую за этой конфигурацией.

Я нашел команду и запустил ее вручную в консоли:

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

Но это не работает, тогда я хочу найти похожее поведение, потому что я на Ubuntu 12.04. Как я могу это сделать?

$_IP_$ переменная заменяется значением ip в конфигурации. Основная проблема заключается в arping команда.

2 ответа

При запуске команды 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 указывает интерфейс для выполнения арпинга, а -s указывает источник, из которого вы делаете арпинг. Это дерьмо, я знаю, но обновите вашу команду, чтобы она выглядела следующим образом:

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

где ethx - это ваша локальная сеть, а SOURCE_IP - это IP-адрес, с которого вы собираетесь выполнять арпинг.

Надеюсь, это поможет, ура

У меня была похожая проблема на 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 будет содержать 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, чтобы удалить все пробелы вокруг интерфейса.

Надеюсь, это будет полезно.

Я получаю ту же ошибку, что и отправитель, говоря, что "-U" не является допустимым параметром:

root@pgpool-2:/var/log# arping -U 192.168.13.1 -w -1
arping: invalid option -- 'U'
ARPing 2.11, by Thomas Habets <thomas@habets.se>
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'

Итак, в основном:

  • -У не существует, поэтому удали его
  • Добавьте -v, чтобы получить подробный вывод, который может быть полезен
  • Добавьте -c 100, чтобы он в конце концов закончился... в противном случае он будет работать вечно
Другие вопросы по тегам