Am de gând să încerc un script powershell.
traseu
arată tabelele de rutare curente ca un tabel cu aceste coloane:
Destinație,Gateway,Genmask,Flags,Metric,Ref,Use,Iface
Așa că am salvat acea ieșire într-un fișier și am copiat-o pe noua gazdă. Am convertit ieșirea brută într-un fișier csv eliminând prima linie și înlocuind spațiile cu o virgulă. De asemenea, am înlocuit numele dispozitivelor cu altele care se potriveau pe noul sistem. Deci, tabelul meu de rute de testare ar putea arăta astfel:
Destinație,Gateway,Genmask,Flags,Metric,Ref,Use,Iface
implicit,gateway,0.0.0.0,UG,0,0,0,enp5s0
implicit,toblerone.mydomain.org,0.0.0.0,UG,100,0,0,eno1
192.168.0.0,0.0.0.0,255.255.255.0,U,100,0,0,eno1
192.168.1.0,0.0.0.0,255.255.255.0,U,0,0,0,enp5s0
192.168.1.0,gateway,255.255.255.0,UG,0,0,0,enp5s0
The traseu
comanda poate produce erori neașteptate atunci când ruta există deja. De asemenea, nu vreau ca comenzile generate să ruleze direct. Deci, scriptul meu PowerShell arată astfel:
#!/usr/bin/env pwsh
Set-StrictMode - cea mai recentă versiune
$ErrorActionPreference = „Oprire”
$PSDefaultParameterValues['Set-*:ErrorAction'] = „Oprire”
$routeDataCSV = Import-CSV "./route_data.csv"
# O rută trebuie ștearsă o singură dată pe rulare.
$routeDeleted = @{}
foreach ($routeIn în $routeDataCSV) {
dacă (!$routeDeleted[$routeIn.Destination] -sau (!($routeDeleted[$routeIn.Destination] -ca „adevărat”))) {
Scrie-Ieșire „route del -net $($routeIn.Destination)”
$routeDeleted[$routeIn.Destination] = „adevărat”
}
Scrie-Ieșire „route add -net $($routeIn.Destination) gw $($routeIn.Gateway) netmask $($routeIn.Genmask) metric $($routeIn.Metric) dev $($routeIn.Iface)”
}
Comenzile generate sunt atunci:
route del -net implicit
route add -net default gw gateway netmask 0.0.0.0 metric 0 dev enp5s0
route add -net default gw toblerone.mydomain.org netmask 0.0.0.0 metric 100 dev eno1
route del -net 192.168.0.0
route add -net 192.168.0.0 gw 0.0.0.0 netmask 255.255.255.0 metric 100 dev eno1
route del -net 192.168.1.0
route add -net 192.168.1.0 gw 0.0.0.0 netmask 255.255.255.0 metric 0 dev enp5s0
route add -net 192.168.1.0 gw gateway netmask 255.255.255.0 metric 0 dev enp5s0