Bash Script um DNS umzustellen?
Habe einmal ein Bash Script und eine .Desktop Verknüpfungen auf meinem Arch KDE und wollte bei Doppelklick auf die Verknüpfungen zb Updaten oder DNS auf 8.8.8.8 oderr Automatisch Umstellen.
(Ich kann auch via KDE Connect das ganze Starten und ohne EIngabe abschließen mit sudo pacman -Syu --noconfirm && yay -Syu --noconfirm)
Aber bei toggle_dns funktioniert das leider nicht mit dem gelieferten Code von ChatGPT (siehe Unten) und ich kann garkein Bash, nur "normale" programmiersprachen wie JavaScript oder PHP. Mit Python würde ich es vielleicht hinkriegen aber das ist doch viel aufwendiger jetzt die IDE erneut zu installieren als mit Bash.
Wenn es das gibt wollte ich eine KDE eigene Benachrichtigung in welchen Modus es jetzt gewechselt ist zb : DNS auf Automatisch umgestellt oder DNS auf 8.8.8.8 Umgestellt statt ein Terminal was ich dann noch per hand schließen muss.
Kann mir jemand weiterhelfen den Code zu reparieren ?
toggle_dns.sh :
#!/bin/bash
# Datei und Schnittstelle für die DNS-Konfiguration
RESOLV_CONF="/etc/resolv.conf"
INTERFACE="Netzwerkschnittstelle_von_euch"
# Funktion zum Setzen des DNS-Servers auf 8.8.8.8
set_dns() {
echo -e "nameserver 8.8.8.8\noptions edns0" | sudo tee $RESOLV_CONF > /dev/null
sudo systemctl restart NetworkManager
notify "DNS wurde auf 8.8.8.8 gesetzt."
}
# Funktion zum Zurücksetzen des DNS-Servers auf automatisch
reset_dns() {
sudo rm -f $RESOLV_CONF
sudo systemctl restart NetworkManager
notify "DNS wurde auf automatisch gesetzt."
}
# Funktion zum Senden einer KDE-Benachrichtigung
notify() {
message=$1
kdialog --passivepopup "$message" 5
}
# Überprüfen, ob der DNS-Server bereits auf 8.8.8.8 gesetzt ist
if grep -q "8.8.8.8" $RESOLV_CONF; then
echo "DNS ist derzeit auf 8.8.8.8 gesetzt. Umschalten auf automatisch."
reset_dns
else
echo "DNS ist derzeit automatisch konfiguriert. Umschalten auf 8.8.8.8."
set_dns
fi
2 Antworten
![](https://images.gutefrage.net/media/user/evtldocha/1661618046590_nmmslarge__0_0_330_330_5b65438fd0a76c82f10658bb02dc7007.png?v=1661618047000)
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).
![](https://images.gutefrage.net/media/user/evtldocha/1661618046590_nmmslarge__0_0_330_330_5b65438fd0a76c82f10658bb02dc7007.png?v=1661618047000)
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.
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
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 ?
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.
Erklärung der Parameter: