LINUX.ORG.RU
ФорумAdmin

Работа с таблицей маршрутизации

 ,


0

1

Допустим, имеется таблица статической маршрутизации, в которой очень много записей (ну допустим 2000). Требуются следующие задачи:

1) Удалить все записи, относящиеся к заданной подсети. Ведь, допустим, 203.0.113.2/32 может входить в таблицу много раз. А route del удаляет только одну запись. Есть ли более изящный способ, чем вызывать удаление последовательно в цикле до возврата ошибки?

2) Некое подобие sql-запроса. В моём случае предполагается работа из скрипта на python. Нужно получить все записи таблицы, относящиеся к определённой подсети. С наименьшими затратами ресурса, меньшими, чем перелопачивать всю таблицу.

3) Аналог ip route replace, но, если в таблице есть несколько записей для данной подсети, остальные удалить. То есть, если я прописал, чтобы тарфик до указанной подсети шёл через 203.0.113.2, то осталась только одна запись с данным шлюзом.

☆☆☆☆☆

Ответ на: комментарий от hizel

Какой ещё жоб? Нет, код никакой писать не нужно. Мне только узнать, можно ли это сделать более рациональным способом, чем перелопачивать скриптом всю таблицу.

Ttt ☆☆☆☆☆
() автор топика

Что за бред я только что прочитал? Правила у тебя откуда подгружаются? Ниоткуда, висят просто в памяти? Ну так сохрани выхлоп ip r в файл, обработай его sort'ом, uniq'ом и прочими радостями, да замени таблицу. Ты тут ответа ждать дольше будешь про "оптимальные" методы, чем проблему решать.

kernelpanic ★★★★★
()
Ответ на: комментарий от kernelpanic

Ну так не разовая проблема. Манипуляции нужно производить постоянно скриптом, причём, возможно, на слабом железе.

Хотя, может, я вообще усложняю задачу.

Ttt ☆☆☆☆☆
() автор топика
Ответ на: комментарий от beastie

Это у меня на всякий случай. Если вдруг будут по каким-то причинам.

Ttt ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Ttt

Вот у вас и должен быть такой алгоритм, что скрипт постоянно читает всю таблицу маршрутизации, сам её парсит (без всякого sed/grep, питон всё таки) и создаёт список удаляемых/добавляемых машрутов. Ведь нужно ещё учитывать, что команда ″ip route add″ может завершиться не удачно, если одновременно с ней запускалась другая ″ip route add″, во всяком случае раньше так было.

mky ★★★★★
()

На сколько я знаю, изящного способа нет — нужно городить колхоз-скрипты поверх утилиты ip. В этом вся суть линукса — оптимизировано под ручную работу, а не на скрипты :(

true_admin ★★★★★
()

2000 строк это не тот объём что-бы бояться фулскана, если конечно это происходит не раз в секунду.

MrClon ★★★★★
()
Ответ на: комментарий от beastie

Кстати, в случае с двойным правилом при одинаковой метрике какой маршрут выбирается? Случайный?

Ttt ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Ttt

Затрудняюсь ответить. Скорей всего «implementation dependet». Или первый попавшийся или случайный. Это в сырцы смотреть надо.

Под BSD: route get <Host|IP>, под Linux: ip route get <IP>.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.