Bash Script um DNS umzustellen?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
sudo systemctl restart NetworkManager

Das sagt mir, dass Du offensichtlich den Network Manager verwendest, um Deine Netzwerk-Konfiguration zu verwalten. Wenn dem so ist, verstehe ich nicht, warum das Skript keine "nmcli" Kommandos verwendet, um irgendetwas an der Netzwerk-Konfiguration zu ändern (zu toggeln). Alles andere ist eine Arbeit am Network Manager vorbei und muss irgendwann zu Konflikten führen.

Ich würde hier mit zwei unterschiedlichen Network Manager Profilen "Profil 1" und "Profil 2" (nur um irgendwelche Profilnamen zu verwenden) arbeiten und wechselweise mit

nmcli connection up "Profil 1"
nmcli connection up "Profil 2"

das gewünschte Profil aktivieren (wenn es denn wirklich sein muss, den DNS-Server umzustellen - was ich so nicht verstehe).


johndont 
Beitragsersteller
 19.07.2024, 19:41

Okay Danke die Antwort hat das wieder ins Rollen gebracht, habe also mithilfe von ChatGPT folgende Steps unternommen und es scheint zu klappen zwischen meinem "D-LAN Adapter" und einem neuen "google_dns_profile" zu wechseln / es zu deaktivieren.
Ohne KI könnte ich die Sache schon vergessen und immer manuell grafisch die DNS Einstellungen ändern.

1. Erstellen des Google DNS-Profils
Führen Sie den folgenden Befehl aus, um ein Profil für Google DNS zu erstellen. Passen Sie die IP-Adresse und das Gateway an Ihre Netzwerkkonfiguration an:
nmcli connection add type ethernet con-name google_dns_profile ifname enp5s0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8"

Erklärung der Parameter:

  • `type ethernet`: Gibt an, dass es sich um eine Ethernet-Verbindung handelt.
  • `con-name google_dns_profile`: Der Name des neuen Profils.
  • `ifname enp5s0`: Die Netzwerkschnittstelle, die verwendet wird (Ihr D-LAN Adapter).
  • `ipv4.method manual`: Legt die IPv4-Konfiguration manuell fest.
  • `ipv4.addresses 192.168.1.100/24`: Die IP-Adresse und Netzmaske, die verwendet wird (passen Sie diese an Ihre Netzwerkkonfiguration an).
  • `ipv4.gateway 192.168.1.1`: Die Gateway-Adresse (ebenfalls anpassen, wenn nötig).
  • `ipv4.dns "8.8.8.8"`: Der DNS-Server (Google DNS).
2. Überprüfen der Konfiguration
Vergewissern Sie sich, dass das Profil korrekt erstellt wurde:
nmcli connection show
Sie sollten `google_dns_profile` in der Liste sehen.
3. Aktivieren des Google DNS-Profils
Um das Google DNS-Profil zu aktivieren, verwenden Sie den folgenden Befehl:
sudo nmcli connection up google_dns_profile
Aktualisiertes `toggle_dns.sh` Skript
Hier ist ein Beispiel-Skript, um zwischen Google DNS und deaktiviertem Zustand umzuschalten:
#!/bin/bash


# Name des NetworkManager-Profils für Google DNS
GOOGLE_PROFILE="google_dns_profile"


# Funktion zum Setzen des DNS-Servers auf 8.8.8.8 mit dem Google DNS-Profil
set_dns() {
  nmcli connection up "$GOOGLE_PROFILE"
  notify "DNS wurde auf 8.8.8.8 gesetzt."
}


# Funktion zum Zurücksetzen des DNS-Servers (deaktiviert das Google DNS-Profil)
reset_dns() {
  nmcli connection down "$GOOGLE_PROFILE"
  notify "DNS wurde zurückgesetzt."
}


# Funktion zum Senden einer KDE-Benachrichtigung
notify() {
  message=$1
  kdialog --passivepopup "$message" 5
}


# Überprüfen des aktuellen DNS-Servers
CURRENT_DNS=$(nmcli dev show enp5s0 | grep 'IP4.DNS' | awk '{print $2}')
if [[ "$CURRENT_DNS" == "8.8.8.8" ]]; then
  echo "DNS ist derzeit auf 8.8.8.8 gesetzt. Umschalten auf deaktiviert."
  reset_dns
else
  echo "DNS ist derzeit nicht auf 8.8.8.8 gesetzt. Umschalten auf 8.8.8.8."
  set_dns
fi
.desktop-Verknüpfung erstellen
Erstellen Sie eine .desktop-Datei für einfachen Zugriff:
[Desktop Entry]
Name=Toggle DNS
Comment=Toggle DNS between default and Google
Exec=/home/benutzername/Schreibtisch/toggle_dns.sh
Icon=network
Terminal=false
Type=Application
Ersetzen Sie `benutzername` durch Ihren tatsächlichen Benutzernamen.
Sudoers-Datei aktualisieren
Falls erforderlich, stellen Sie sicher, dass keine Passwortaufforderung für nmcli erforderlich ist:
## Ausnahme für Sudo
benutzername ALL=(ALL) NOPASSWD: /usr/bin/nmcli
Zusammenfassung
1. Erstellen des Google DNS-Profils: Konfigurieren Sie es mit nmcli.
2. Aktivieren des Profils: Verwenden Sie das `nmcli`-Kommando, um das Profil zu aktivieren.
3. Anpassen des Skripts: Für das Umschalten zwischen Google DNS und deaktiviertem Zustand.
4. .desktop-Verknüpfung: Erstellen Sie eine Verknüpfung für einfachen Zugriff.
5. Sudoers-Datei: Falls erforderlich, aktualisieren Sie sie für die reibungslose Ausführung.
Diese Schritte helfen Ihnen, Google DNS effizient zu konfigurieren und zu verwenden.
0
johndont 
Beitragsersteller
 19.07.2024, 19:49
@johndont

Und nochmal am Ende diese Befehle hat geholfen

sudo nmcli networking off
sudo nmcli networking on 
sudo systemctl restart NetworkManager 
0
evtldocha  19.07.2024, 19:50
@johndont

Keine Ahnung, wozu dieser aufgeblasene Overhead gut sein soll. Die beiden Profile kann man ja einfach mit der GUI einmal anlegen, um sie dann in einem Skript zu verwenden (bzw. aus einer bestehenden Datei "<PROFIL>.ncommection" erzeigen kann). Und das mit dem sudo ist eigentlich komplett unnötig, da man mit nmcli existierende Profile auch managen (nicht ändern!) kann.

Bevor du nachfragst: Ich korrigiere sicherlich keine geistigen Ergüsse von ChatGPT.

2
johndont 
Beitragsersteller
 19.07.2024, 20:04
@evtldocha

Danke Passt aufjedenfall muss nichs mehr korrigiert werden, kenne mich halt nicht aus damit und wollte es nur mal aufgelistet haben falls ich in 2 Jahren vergesse was ich da gemacht habe.
Dann hangel ich mich an diesen 1-2 Steps durch, Bash kann ich irgendwann anders lernen dafür habe ich keine Zeit/Lust zur zeit.
Die Profile könnte ich auch so anlegen stimmt aber im Prinzip das selbe außer das es einfach Google Down setzt statt zu ein weiteres Profil Up zu setzen.

0

Welchen Sinn soll das Spielchen mit dem Umstellen der DNS-Einstellungen haben.

Das stellt man einmal so ein, dass es für das Netzwerk passt und gut ist.


johndont 
Beitragsersteller
 19.07.2024, 19:44

Möchte nicht dauerhaft Google DNS nutzen, benötige aber sehr oft andere DNS Einstellungen und ich finde es lustig solche Bash Scripts zu erstellen mit ChatGPT die mir mit einem Doppelklick diese Mühsamen Sachen abnehmen.
Vielleicht lerne ich es irgendwann auch richtig.
Wenn es nicht oft wäre klar kann ich unter KDE Settings -> Wlan & Netzwerke - Systemeinstellungen -> Mein Ethernet DLAN -> IPv4 DNS-Server 8.8.8.8 hinzufügen und dann wars das schon.
Hat aufjedenfall geklappt, habe es detailiert bei der anderen Antwort beschrieben damit ich es nicht nochmal lernen muss.

0
johndont 
Beitragsersteller
 20.07.2024, 08:03
@anTTraXX

Ja ich kann kein Bash, will es auch nicht lernen zur zeit und es hat offensichtlich geklappt.

Die einzige alternative wäre hier zu fragen, aber bis auf evtldocha sparsame Antwort kam sonst nichts gutes.
Verstehe nicht was daran ein Ausrufezeichen und ein Fragezeichen wert war, soll ich mit ChatGPT mir 12 Ideen für Wichtelgeschenke generieren lassen oder ab wann ist der Einsatz einer Künstlichen Intelligenz angemessen ?

0