Ich möchte eine temporäre Änderung des DNS-Servers skripten, um die DHCP-Antwort zu überschreiben, die ich vom Netzwerk erhalte. Ich habe herausgefunden, dass ich es verwenden kann, networksetup
aber sobald wir mit dem Testen fertig sind. Bevor ich zur Produktion übergehe, sollte ich wissen, wie ich das rückgängig machen kann.
Wie kann ich ein Skript erstellen, um diese Änderungen zu löschen und die Einstellungen, die das Netzwerk jetzt bereitstellt, wiederherzustellen, als ob ich das folgende Skript nie ausgeführt hätte?
networksetup -setdnsservers Wi-Fi "8.8.8.8" "8.8.4.4"
Es ist nicht möglich, die vorherigen Einstellungen zu speichern, und ich möchte die Einstellung entfernen, damit die tatsächlichen neuen Werte aus dem Netzwerk abgerufen werden können, anstatt die vorherigen Einstellungen zu speichern, sodass ich keinen alten Wert speichere nicht mehr richtig.
Grundsätzlich schaue ich ipconfig /renew
auf macOS.
Wenn es Ihnen nur darum geht, DNS-Einträge zu bereinigen, gibt Ihnen der Befehl help Anweisungen, was zu tun ist:
Usage: networksetup -setdnsservers <networkservice> <dns1> [dns2] [...]
Set the <networkservice> DNS servers to <dns1> [dns2] [...]. Any
number of dns servers can be specified. Specify "Empty" for <dns1>
to clear all DNS entries.
In meinem Fall
sudo networksetup -setdnsservers Wi-Fi "Empty"
Erstellen Sie einen neuen Netzwerkdienst mit der entsprechenden Schnittstelle (z. B. en1 = AirPort):
sudo networksetup -createnetworkservice Wi-Fi2 en1
Entfernen Sie die mit den benutzerdefinierten DNS-Einstellungen:
sudo networksetup -removenetworkservice Wi-Fi
Benennen Sie den neuen Netzwerkdienst in den ursprünglichen Namen um:
sudo networksetup -renamenetworkservice Wi-Fi2 Wi-Fi
In meiner Umgebung hat der neue Dienst DHCP und seine neuen Einstellungen automatisch abgerufen. Möglicherweise müssen Sie es sudo networksetup -setdhcp Wi-Fi
explizit mit festlegen oder sich die DHCP-Antwort für die Schnittstelle ansehen und die bereitgestellten DNS-IP(s) mit parsen ipconfig getpacket en1
.
networksetup -setdnsservers NetServiceName "Empty"
ist die richtige CLI-Lösung.
Quuxplusone
networksetup -setdnsservers Wi-Fi Empty
.