Frage zu Linux (Mint) und Terminal

  • Moin zusammen :)

    Ich nutze Linux Mint 20.2 auf diversen Notebooks und bei jedem Kernelwechsel muss ich meinen USB WLAN Stick neu einrichten.

    Ist ja im Prinzip kein Problem.....ich habe mir jedoch heute die Frage gestellt (da ich kein Linux Profi bin) ob man die Zeilen die ich in das Terminal eingebe nicht in eine "Routine"? packen kann und mir so die Eingabe jeder einzelnen Zeile sparen kann?

    Das gebe ich Zeile für Zeile ein:


    sudo apt-get update

    sudo apt-get install linux-headers-generic build-essential git

    git clone https://github.com/gnab/rtl8812au.git

    cd ~/rtl8812au

    make

    sudo make install

    sudo modprobe 8812au


    Vielen Dank für Tipps.

  • Da könnte man ein bash Skript draus machen. Allerdings ist einiges davon nicht jedes Mal notwendig (apt install, git pull statt clone). Falls sich bis dahin niemand gemeldet hat, schau ich es mir nachher nochmal genauer an, wenn ich Zeit hab.

  • Klar....kannst du in ein Script packen....


    Das packst du alles in eine Datei namens "wlan.sh" und diese legst du in "/usr/local/bin" ab. Dann machst du noch ein sudo chmod +x /usr/local/bin/wlan.sh

    und schon kannst du die Datei von überall aus aufrufen. Musst sie halt mit "sudo wlan.sh" aufrufen. Ich habe einen Check eingebaut, der prüft ob du das Script mit oder ohne sudo ausführst. Einige der Befehle benötigen root-Rechte. Somit sollte das Script gleich als root ausgeführt werden und wenn das nicht der Fall ist, direkt abbrechen.

    Man könnte natürlich vorher noch prüfen, ob das geclonte Verzeichnis schon existiert und dann nur einen "git pull" machen oder das Verzeichnis einfach vor dem Clonen entfernen, aber so sollte es auch gehen.

    Viel Spaß

    Einmal editiert, zuletzt von DaVu (28. September 2021 um 14:36)

  • Ich habe mal auf die schnelle ergoogelt:
    https://it-learner.de/linux-bash-script-erstellen/

    Prinzipiell sollte das mit viel weniger Konsole auch gehen, Datei anlegen sollte klar sein, wie man die in einem (grafischen-)Editor öffnet auch und in den Dateieigenschaften (rechtsklick => Eigenschaften) sollte man die Datei auch als ausführbar kennzeichnen können.

    Wg. "sudo" habe ich gerade etwas nachgeforscht. Am besten ist es wohl, wenn du die sudo weglässt und stattdessen dein Skript mit sudo aufrufst ( https://qastack.com.de/ubuntu/425754/…inside-a-script )

    BTW:
    Wenn man in Foren Codes postet, ist es ganz gut die Code-Tags zu verwenden:

    Code
    sudo apt-get update
    sudo apt-get install linux-headers-generic build-essential git
    git clone [url='https://github.com/gnab/rtl8812au.git']github.com/gnab/rtl8812au.git[/url]
    cd ~/rtl8812au
    make
    sudo make install
    sudo modprobe 8812au
    Zitat von root2

    Merke: Das "S" in "IoT" steht für Sicherheit!

  • Danke :)

    werde ich versuchen.

  • Du kannst im Terminal einfach

    sudo nano /usr/local/bin/wlan.sh

    machen. Dann kopierst du das obige rein. Drückst "Strg+x" (sollte zum Speichern in Nano sein....siehst du aber in der Oberfläche)

    Und danach machst du noch

    sudo chmod +x /usr/local/bin/wlan.sh

  • Man könnte natürlich vorher noch prüfen, ob das geclonte Verzeichnis schon existiert und dann nur einen "git pull" machen oder das Verzeichnis einfach vor dem Clonen entfernen, aber so sollte es auch gehen.

    ??

    das Verzeichnis erscheint jetzt schreibgeschützt und kann jetzt nicht mehr gelöscht werden....wie lösche ich das vorher?

  • Das Verzeichnis hat dein Skript erstellt, welches du mit sudo ausgeführt hast. Damit dürfte der Besitzer des Verzeichnisses root sein (kannst ja mal in den Dateieigenschaften nachgucken). Löschen damit eben mit sudo.

    Zitat von root2

    Merke: Das "S" in "IoT" steht für Sicherheit!

  • Wir waren relativ gleichzeitig. Aber deine Lösung ist schon echt schniecke ;)

    naja....geht so ;) aber danke [ay]

    Man könnte noch ein paar Checks einbauen, damit das 100% rund läuft.

    - Check ob Verzeichnis existiert
    -- wenn nicht, dann Clonen
    -- wenn ja, dann....
    - Check ob es ein git repo ist
    -- wenn ja, dann pullen
    -- wenn nicht, User entscheiden lassen nach: Abbruch oder Verzeichnis entfernen und neu Clonen

    Da ist also schon noch Verbesserungspotential ;). War aber auch nur schnell am Handy getippt ;)

  • Das Verzeichnis hat dein Skript erstellt, welches du mit sudo ausgeführt hast. Damit dürfte der Besitzer des Verzeichnisses root sein (kannst ja mal in den Dateieigenschaften nachgucken). Löschen damit eben mit sudo.

    habe mit

    sudo rm -r /home/karsten/rtl8812au

    gelöscht

    folgender Fehler:

    /usr/local/bin/wlan.sh: Zeile 10: cd: /root/rtl8812au: Datei oder Verzeichnis nicht gefunden
    make: *** Es wurden keine Ziele angegeben und keine „make“-Steuerdatei gefunden. Schluss.
    make: *** Keine Regel, um „install“ zu erstellen. Schluss.

  • ??
    das Verzeichnis erscheint jetzt schreibgeschützt und kann jetzt nicht mehr gelöscht werden....wie lösche ich das vorher?

    mach Mal ein ls -al $HOME

    Dann schaust du dir Mal Benutzer und Gruppe des Verzeichnisses an. Da sollte jetzt "root root" stehen.

    Solche Verzeichnisse kannst du mit "sudo rm -rf <Verzeichnis>" löschen

    Möchtest du Benutzer und Gruppe bei deinem User belassen, dann musst du deine sudoers anfassen und deinem jetzigen Benutzer erlauben root-Befehle ohne Passwort auszuführen. Würde ich eher nicht machen, wenn du unerfahren bist.

    Da wäre das angesprochene DKMS die bessere Wahl.

    Man kann es suchst so machen, dass man die sudo-Befehle mit ins Script packt. Dann musst du halt während das Script läuft zusätzlich Passworte eingeben

  • habe mit
    sudo rm -r /home/karsten/rtl8812au

    gelöscht

    folgender Fehler:

    /usr/local/bin/wlan.sh: Zeile 10: cd: /root/rtl8812au: Datei oder Verzeichnis nicht gefunden
    make: *** Es wurden keine Ziele angegeben und keine „make“-Steuerdatei gefunden. Schluss.
    make: *** Keine Regel, um „install“ zu erstellen. Schluss.

    AHhhhh....verdammt

    Stimmt er Clont das nach "/root" das klappt so nicht. löst "$HOME" falsch auf. Gib mir Mal nen Moment

    Einmal editiert, zuletzt von DaVu (28. September 2021 um 16:12)

  • BTW:
    Wenn man in Foren Codes postet, ist es ganz gut die Code-Tags zu verwenden:

    sehr gerne, aber erkläre mich nicht für blöd......wie mache ich das richtig?

  • @Bobbi2021

    Du hast ja einen Benutzernamen / User auf deinem Linux-Mint

    Ändere das Script mal so ab:


    Oben sind 2 Änderungen drin. Einmal clonen wir das git-Repo in ein entsprechendes Verzeichnis und geben dort einen vollständigen Pfad an. Und dann wechseln wir auch in das Verzeichnis und geben auch dort den Vollständigen Pfad an.

    Fehler war...du hast das Script ja als sudo aufgerufen. Und somit wird dann die Variable "$HOME" zum Home-Verzeichnis des Root-Users aufgelöst, was unter Linux halt eben /root ist. Deswegen schlägt der cd-Befehl fehl, da das VErzeichnis nicht existiert. ;)

    ich hoffe es sollte so klappen. Habe dafür im Urlaub jetzt extra meine Laptop zum ersten mal eingeschaltet :D

    Einmal editiert, zuletzt von DaVu (28. September 2021 um 16:17)

  • @DaVu

    Vielen lieben Dank, wollte dich nicht stressen....werde ich gleich mal versuchen :)

    leider nein.....

    #!/bin/bash

    if [ $(id -u) != 0 ]; then
    echo "Script braucht sudo"
    exit 1
    fi
    apt-get update
    apt-get install linux-headers-generic build-essential git

    git clone https://github.com/gnab/rtl8812au.git /home/karsten/rtl8812au
    cd /home/karsten/rtl8812au

    make
    make install
    modprobe 8812au

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!