Два IP-адреса адреса на том же интерфейсе, узнайте, какой из них используется

trap '' INT предназначен для игнорирования SIGINT для оболочки и всех ее дочерних элементов.

Но, глядя на результаты strace на scp , похоже, что scp устанавливает собственный обработчик SIGINT, который отменяет SIG_IGN, указанный выше.

Единственный способ предотвратить получение SIGINT - запустить его в другой группе процессов, например:

perl -MPOSIX -e 'setpgid 0,0; exec @ARGV' scp...

или

(set -m; scp ... & wait)

, или указать драйверу tty, чтобы он прекратил посылать SIGINT при нажатии Ctrl-C (как с stty -isig или stty intr '' только для ^ C ), хотя впоследствии вы захотите восстановить настройки:

saved=$(stty -g)
stty intr ''
scp ...
stty "$saved"
1
29.06.2017, 12:11
1 ответ

Команда ip route get ADDRESSработает, даже если шлюз по умолчанию не настроен.Например, если на eth0 настроены следующие адреса: 10.0.7.139/24, 169.254.1.2/16, а маршрут по умолчанию удален, то

$ ip route get 10.0.7.222
10.0.7.222 dev eth0 src 10.0.7.139 
    cache

$ ip route get 169.254.55
169.254.55.0 dev eth0 src 169.254.1.2 
    cache

$ ip route get 1
RTNETLINK answers: Network is unreachable

Последний ответ правильно: невозможно добраться до хоста с любым из адресов 1.xxx, если к нему не существует маршрута. Это не команда ip route getне работает, это неправильная конфигурация сети.

Обратите внимание, что «локальный канал» означает именно то, что адрес предназначен для использования только в канале Ethernet, к которому подключен eth0. Его не следует использовать на «исходящем» соединении.

Редактировать: поясняющий комментарий добавлен ниже.

Таблица маршрутизации, и только таблица маршрутизации, определяет, как пакет начинает свой путь к месту назначения. Маршрут всегда используется при отправке IP-пакета, даже если пункт назначения находится на локальном канале или даже на локальном хосте. Записи таблицы маршрутизации также содержат исходный адрес, и этот адрес соответствующего маршрута выбирается в качестве исходного IP-адреса передаваемого пакета.

Может быть несколько IP-адресов, назначенных одному и тому же интерфейсу, даже из одного и того же диапазона адресов, но только один из них (первичный адрес) указан в соответствующей записи таблицы маршрутизации.

Таким образом, ip route get(или косвенно ip route) дает окончательный ответ на ваш вопрос. Из справочной страницы ip-route: «Эта команда получает единственный маршрут к месту назначения и печатает его содержимое точно так, как его видит ядро."

1
27.01.2020, 23:45

Теги

Похожие вопросы