Использование команды 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, чтобы он в конце концов закончился... в противном случае он будет работать вечно