ฉันจะลองใช้สคริปต์ 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,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,เกตเวย์,255.255.255.0,UG,0,0,0,enp5s0
เดอะ เส้นทาง
คำสั่งสามารถสร้างข้อผิดพลาดที่ไม่คาดคิดเมื่อมีเส้นทางอยู่แล้ว ฉันไม่ต้องการให้คำสั่งที่สร้างขึ้นทำงานโดยตรง ดังนั้นสคริปต์ PowerShell ของฉันจึงมีลักษณะดังนี้:
#!/usr/bin/env pwsh
Set-StrictMode - เวอร์ชั่นล่าสุด
$ErrorActionPreference = "หยุด"
$PSDefaultParameterValues['Set-*:ErrorAction'] = "หยุด"
$routeDataCSV = นำเข้า-CSV "./route_data.csv"
# ควรลบเส้นทางเพียงครั้งเดียวต่อการวิ่ง
$routeDeleted = @{}
foreach ($routeIn ใน $routeDataCSV) {
ถ้า (!$routeDeleted[$routeIn.Destination] -or (!($routeDeleted[$routeIn.Destination] -like "true"))) {
เขียนเอาต์พุต "route del -net $($routeIn.Destination)"
$routeDeleted[$routeIn.Destination] = "จริง"
}
การเขียนเอาต์พุต "เส้นทางเพิ่ม -net $($routeIn.Destination) gw $($routeIn.Gateway) netmask $($routeIn.Genmask) เมตริก $($routeIn.Metric) dev $($routeIn.Iface)"
}
คำสั่งที่สร้างขึ้นคือ:
เส้นทาง del -net เริ่มต้น
เพิ่มเส้นทาง - เกตเวย์เริ่มต้นสุทธิ gw netmask 0.0.0.0 เมตริก 0 dev enp5s0
เพิ่มเส้นทาง - ค่าเริ่มต้นสุทธิ gw toblerone.mydomain.org netmask 0.0.0.0 เมตริก 100 dev eno1
เส้นทาง del -net 192.168.0.0
เพิ่มเส้นทาง -net 192.168.0.0 gw 0.0.0.0 netmask 255.255.255.0 เมตริก 100 dev eno1
เส้นทาง del -net 192.168.1.0
เพิ่มเส้นทาง -net 192.168.1.0 gw 0.0.0.0 netmask 255.255.255.0 เมตริก 0 dev enp5s0
เส้นทางเพิ่ม -net 192.168.1.0 gw เกตเวย์ netmask 255.255.255.0 เมตริก 0 dev enp5s0