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.
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 
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.

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.

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.

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 ?

Luffy123777  14.08.2024, 17:12
@johndont

Bash befehle sind tatsächlich das gleiche wie das Terminal auf crack, wenn du dich also nicht mit bash auskennst frage ich mich wieso du dann random commands copy & pastest

johndont 
Beitragsersteller
 14.08.2024, 17:17
@Luffy123777

Die Sprache ist immernoch englisch „like“ und da ich andere programmiersprachen kann gehe ich immer kurz drüber ob irgendwas nicht hinkommen könnte. Risiko das da irgendwas komplett kaputt geht halte ich für gering. Man kann sich auch einzelne sachen erklären lassen mit hoher Wahrscheinlichkeit das es nicht von chat gpt phantasiert war, bzw solange man einen neuen chatgpt tab öffnet der unabhängig vom älteren chat wird.

Habe das Gefühl das sie mit der zeit dümmer werden wenn man nach 10 nachfragen noch im Chat bleibt.

Aber wie du denkst das ich komplett blind was einfüge stimmt auch nicht so, natürlich kommt das mal vor bei leuten oder man baut mal unnötig dummen mist.
Im nachhinein ist man immer schlauer, und wer keine backups erstellt ärgert sich

Luffy123777  14.08.2024, 17:19
@johndont

Hast du überhaupt gelesen was ich geschrieben habe?

Naja, ich warte da nur drauf bis da irgendwenn sudo rm -rf /* steht

johndont 
Beitragsersteller
 14.08.2024, 18:31
@Luffy123777

Und ich wüsste was sudo rm -rf bedeutet dafür muss man kein profi Bash scripter sein da reicht Basic Linux Knowledge, die hat man wahrscheinlich wenn man Arch nutzt.
Selbst wenn ich befehle eingebe die ich nicht kenne, kann es mir eigentlich egal sein.
Auf dem System mache ich nichts ausser surfen und programmieren sowas.
Habe noch ein Windows System zum Arbeiten.
Meine ganzen Projekte sind auch auf Github.

Meine wichtigen Bilder/Videos sind auf einer unabhängigen Festplatte.
Das ist nur ein experimentier System, wenn ich lust habe lösch ich es und probier ein Monat Debian aus.

Hier übertreiben alle gerne, worst case szenario das ich das in irgendeiner Firma mache wo wichtige Dokumente sind.

johndont 
Beitragsersteller
 14.08.2024, 18:38
@johndont

Ich weiss das die Shell Bash nutzt, bash programmieren / scripter sage ich halt wenn es über einzelne befehle wie sudo rm hinaus geht. So kleinigkeiten wie echo irgendwas kann ich auch.
Dafür habe ich keine zeit das richtig zu lernen wie ein systemadminstrator.
Bin kein Webentwickler nur weil ich mal DOM Manipuliert habe oder console log ausgeführt habe