Я собираюсь попробовать скрипт powershell.
маршрут
показывает текущие таблицы маршрутизации в виде таблицы со следующими столбцами:
Пункт назначения, шлюз, маска Genmask, флаги, метрика, ссылка, использование, Iface
Поэтому я сохранил этот вывод в файл и скопировал его на новый хост. Я преобразовал необработанный вывод в файл csv, удалив первую строку и заменив пробелы запятой. Я также заменил имена устройств на те, которые соответствуют новой системе. Итак, моя таблица тестовых маршрутов может выглядеть так:
Пункт назначения, шлюз, маска Genmask, флаги, метрика, ссылка, использование, Iface
по умолчанию, шлюз, 0.0.0.0, UG, 0,0,0, enp5s0
по умолчанию, toblerone.mydomain.org, 0.0.0.0, UG, 100, 0, 0, eno1
192.168.0.0,0.0.0.0,255.255.255.0,У,100,0,0,ено1
192.168.1.0,0.0.0.0,255.255.255.0,У,0,0,0,энп5с0
192.168.1.0,шлюз,255.255.255.0,UG,0,0,0,enp5s0
маршрут
Команда может привести к непредвиденным ошибкам, если маршрут уже существует. Я также не хочу, чтобы сгенерированные команды запускались напрямую. Итак, мой сценарий PowerShell выглядит так:
#!/usr/bin/env pwsh
Set-StrictMode - Последняя версия
$ErrorActionPreference = "Стоп"
$PSDefaultParameterValues['Set-*:ErrorAction'] = "Стоп"
$routeDataCSV = Import-CSV "./route_data.csv"
# Маршрут следует удалять только один раз за прогон.
$routeDeleted = @{}
foreach ($ routeIn в $ routeDataCSV) {
if (!$routeDeleted[$routeIn.Destination] -или (!($routeDeleted[$routeIn.Destination] -like "true"))) {
Запись-вывод "route del -net $($routeIn.Destination)"
$routeDeleted[$routeIn.Destination] = "истина"
}
Write-Output "route add -net $($routeIn.Destination) gw $($routeIn.Gateway) netmask $($routeIn.Genmask) metric $($routeIn.Metric) dev $($routeIn.Iface)"
}
Затем сгенерированные команды:
маршрут del -net по умолчанию
route add -net default gw gateway netmask 0.0.0.0 metric 0 dev enp5s0
route add -net default gw toblerone.mydomain.org сетевая маска 0.0.0.0 метрика 100 dev eno1
маршрут del-net 192.168.0.0
route add -net 192.168.0.0 gw 0.0.0.0 маска сети 255.255.255.0 метрика 100 dev eno1
маршрут del-net 192.168.1.0
route add -net 192.168.1.0 gw 0.0.0.0 маска сети 255.255.255.0 метрика 0 dev enp5s0
route add -net 192.168.1.0 gw gateway маска сети 255.255.255.0 метрика 0 dev enp5s0