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
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).
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.
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.
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.
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 ?
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
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
Hast du überhaupt gelesen was ich geschrieben habe?
Naja, ich warte da nur drauf bis da irgendwenn sudo rm -rf /* steht
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.
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
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: