- Bearbeitet
Ergänzung zu dem von @Gerry_Ghetto gesagtem:
a) Die hohe Anzahl der verwendeten sudo Aufrufe schreit geradezu danach, eben das ganze Skript als Superuser ausführen zu lassen.
z.B.: /usr/local/bin/vupd.sh root:root rwxr-x-r--
Ich weiß nicht, wie du sudo zur Erlangung von Rootrechten benutzt. Ob du es mit Paßwortabfrage machst. Oder - da du es ja ggf. automatisch mittels Keybinding als Normaluser benutzen willst - sogar per paßwortlosem sudo.
Letzteres ist halt absolut gefährlich wenn es global eingestellt wäre.
Sudo läßt such so konfigurieren, daß ein User nur genau den definierten Befehl als root ausführen darf, daß kann dann auch - unter kontrollierter Umgebung - paßwortlos sein. Anstatt nun deine Zillionen sudo-Aufrufe jeweils einzeln zu konfigurieren ist es eben sinnvoller das gesamte Skript als nur-root-ausführbar zu gestalten und dann für sudo genau nur diesen Skriptaufruf (paßwortlos) zu erlauben.
Das ist IMHO auch die einzig "richtige" Definition von sudo:
sudo soll einem User nicht mehr (Root)-Rechte geben, sondern etwaig notwendige Root-Rechte beschneiden/einschränken.
b) In einem Skript könntest du z.B. deine bisherigen Alias-Aktionen vulnchk, meltchk, rkhunt als Funktion definieren. Im Hauptteil des Skriptes würden diese Funktionen dann aufgerufen/verarbeitet. So hättest du deine gesamte "Logik" an einem Ort, es ist besser zu erweitern/warten und du könntest mit Variablen arbeiten.
Zur Ausgabe in eine Datei:
Wenn dein Skript all das in der gewünschten Form ausgibt, dann ist es ein Leichtes z.B. als Keybinding die gesamte Ausgabe des Skripts in eine Datei umzuleiten. Alternativ würde sich eine eigene Log-Funktion anbieten (z.B. mittels Skript-Option --log), wenn sich Skript-Ausgabe und gewünschte Datenaufbereitung im Logfile unterscheiden würden.
Also sowas wie:
sudo /usr/local/bin/vupd.sh
bzw.
sudo /usr/local/bin/vupd.sh > /pfad/zum/logfile
bzw.
sudo /usr/local/bin/vupd.sh --log
Weitere Tips:
Gerade am Anfang ist es oftmals hilfreich, nicht nur die Standardausgabe z.B. in eine Datei umzuleiten, sondern auch etwaige Meldungen die über die Fehlerausgabe(stderr) ausgegeben werden. Dazu kann stderr nach stdout umgeleitet werden bevor stdout selbst umgeleitet wird.
Beispiel: pacman -Sy als User wirft normalerweise eine Fehlermeldung.
pacman -Sy > /tmp/out
enthält diese Meldung nun nicht, da nur die Standardausgabe umgeleitet wurde.
pacman -Sy 2&> /tmp/out
enthält nun die Ausgaben von stdout und stderr
Ein hilfreiches Tool um sowohl Ausgaben durch ein Skript im Terminal zu haben (Standardausgabe, stdout) als auch z.B. in eine Datei umzuleiten ist /usr/bin/tee (siehe: man tee).
pacman -Sy 2>&1 | tee /tmp/out
gibt sowohl stdout/stderr ins Terminal aus als auch gleichzeitig in die Datei /tmp/out. Beachte die andere Syntax zur Umleitung von stderr nach stdout (2>&1), da hier eine Pipe(|) verwendet wird.