[gelöscht] Merkwürdiges Problem in Bashskript
[gelöscht] Merkwürdiges Problem in Bashskript
Guten Tag!
Mir ist gerade ein merkwürdiges Verhalten mit Macchanger und einem Bashskript aufgefallen.
Das Skript sollte unter Debian Stable eine Umgebung herstellen, um diverse Testläufe zu machen, indem es je nach Bedarf Softwarepakete aus einem Ordner installiert.
Das Skript wird in diesem Fall im Terminal so gestartet: bash install.sh macchanger
41950
Das Softwarepaket von Macchanger liegt im Verzeichnis ./macchanger/debian/
Bei Macchanger ist es allerdings, sodass man im Terminal eine Frage mit "Ja" oder "Nein" auswählen muss.
Und genau diese Abfrage wird bei der Installation mit diesem Skript grafisch verfälscht dargestellt und es ist nichts auswählbar, d. h. man bleibt hängen an dieser Stelle.
Nun meine Frage, da ich dieses Problem bisher nur bei Macchanger festgestellt habe und auch kein Vollprofi im Programmieren bin, ob das Problem eher darauf hinweist, dass ein Fehler im Skript ist (auch Chatgpt konnte keinen Fehler finden) oder ob Macchanger vielleicht suboptimal vorgeht.
Vielen Dank im Voraus!
Mir ist gerade ein merkwürdiges Verhalten mit Macchanger und einem Bashskript aufgefallen.
Das Skript sollte unter Debian Stable eine Umgebung herstellen, um diverse Testläufe zu machen, indem es je nach Bedarf Softwarepakete aus einem Ordner installiert.
Das Skript wird in diesem Fall im Terminal so gestartet: bash install.sh macchanger
41950
Das Softwarepaket von Macchanger liegt im Verzeichnis ./macchanger/debian/
Bei Macchanger ist es allerdings, sodass man im Terminal eine Frage mit "Ja" oder "Nein" auswählen muss.
Und genau diese Abfrage wird bei der Installation mit diesem Skript grafisch verfälscht dargestellt und es ist nichts auswählbar, d. h. man bleibt hängen an dieser Stelle.
Nun meine Frage, da ich dieses Problem bisher nur bei Macchanger festgestellt habe und auch kein Vollprofi im Programmieren bin, ob das Problem eher darauf hinweist, dass ein Fehler im Skript ist (auch Chatgpt konnte keinen Fehler finden) oder ob Macchanger vielleicht suboptimal vorgeht.
Vielen Dank im Voraus!
Zuletzt geändert von debmatrix am 30.08.2023 00:16:01, insgesamt 2-mal geändert.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Merkwürdiges Problem in Bashskript
Kannst Du wesentliche Bereiche in Deinem Bash-Script mal in folgende Befehle einfassen...
und Dir dann mal genau die Ausgabe anschauen und ggf. hier posten?
(Das mit der Umleitung habe ich wieder entfernt, weil Da ja evtl. Eingaben gemacht werden müssen. Da würde die Umleitung stören.)
Code: Alles auswählen
set -x
...
...
...
set +x
(Das mit der Umleitung habe ich wieder entfernt, weil Da ja evtl. Eingaben gemacht werden müssen. Da würde die Umleitung stören.)
Re: Merkwürdiges Problem in Bashskript
Danke. Ich habe den Fehler jetzt gefunden. Es liegt an folgender Zeile:
Ohne " | sudo tee -a /var/log/install.log" funktioniert es, aber nicht mit.
Aber wie kann ich denn die Ausgabe in eine Log-Datei umleiten, ohne dabei die Eingabeaufforderung von Macchanger zu zerstören?
Das Ding ist, dass dieses Skript seit Jahren einwandfrei funktioniert hatte, bis Debian Bookworm installiert wurde.
Ich hatte extra "tee" dafür verwendet in der Hoffnung, dass die Eingabeaufforderung noch irgendwie überlebt, was ja früher auch der Fall war.
Code: Alles auswählen
sudo $PACKAGEMANAGER ./${1}/${OS}/*.$ENDUNG | sudo tee -a /var/log/install.log
Aber wie kann ich denn die Ausgabe in eine Log-Datei umleiten, ohne dabei die Eingabeaufforderung von Macchanger zu zerstören?
Das Ding ist, dass dieses Skript seit Jahren einwandfrei funktioniert hatte, bis Debian Bookworm installiert wurde.
Ich hatte extra "tee" dafür verwendet in der Hoffnung, dass die Eingabeaufforderung noch irgendwie überlebt, was ja früher auch der Fall war.
Re: Merkwürdiges Problem in Bashskript
Dafür gibt es das Kommando 'script', das Terminalausgaben einer Sitzung oder eines Kommandos loggen kann.debmatrix hat geschrieben:23.08.2023 11:08:05Danke. Ich habe den Fehler jetzt gefunden. Es liegt an folgender Zeile:
Ohne " | sudo tee -a /var/log/install.log" funktioniert es, aber nicht mit.Code: Alles auswählen
sudo $PACKAGEMANAGER ./${1}/${OS}/*.$ENDUNG | sudo tee -a /var/log/install.log
Aber wie kann ich denn die Ausgabe in eine Log-Datei umleiten, ohne dabei die Eingabeaufforderung von Macchanger zu zerstören?
Der Aufruf müsste dann so ähnlich sein wie:
Code: Alles auswählen
sudo script -a -c "$PACKAGEMANAGER ./${1}/${OS}/*.$ENDUNG" /var/log/install.log
Zotac ZBox ID91: Debian 12 mit GNOME
Geekom Mini IT11: Fedora 38 Silverblue (GNOME)
Geekom Mini IT11: Fedora 38 Silverblue (GNOME)
Re: Merkwürdiges Problem in Bashskript
Danke, das funktioniert soweit perfekt.
Allerdings wundert mich nun folgendes Verhalten:
Wenn ich nun mit "tail -f /var/log/install.log" das Loggen beobachte, dann sehe ich die Ausgabe vom Macchanger damit nicht.
Wenn ich dann mit strg+c das Kommando beende und nochmals "tail" mache, dann erscheint sie erst. Aber das Ding ist, dass trotzdem immer noch die Ausgabe komisch aussieht und sich das auch bei der nachfolgenden Nutzung des Terminals fortsetzt, d.h. des Terminals ist quasi nicht mehr benutzbar (lxterminal in meinem Fall). Ich weiß nicht genau, wie ich das beschreiben soll. D. h. obwohl ich bloß "tail" mit der Log-Datei ausführe, die durch "script" geloggte Ausgabe von Macchanger die Optik und das Eingabeverhalten des Terminals nachhaltig gestört.
Es kommt mir langsam wirklich komisch vor. Vielleicht versteckt sich da irgendwo ein Bug.
Allerdings wundert mich nun folgendes Verhalten:
Wenn ich nun mit "tail -f /var/log/install.log" das Loggen beobachte, dann sehe ich die Ausgabe vom Macchanger damit nicht.
Wenn ich dann mit strg+c das Kommando beende und nochmals "tail" mache, dann erscheint sie erst. Aber das Ding ist, dass trotzdem immer noch die Ausgabe komisch aussieht und sich das auch bei der nachfolgenden Nutzung des Terminals fortsetzt, d.h. des Terminals ist quasi nicht mehr benutzbar (lxterminal in meinem Fall). Ich weiß nicht genau, wie ich das beschreiben soll. D. h. obwohl ich bloß "tail" mit der Log-Datei ausführe, die durch "script" geloggte Ausgabe von Macchanger die Optik und das Eingabeverhalten des Terminals nachhaltig gestört.
Es kommt mir langsam wirklich komisch vor. Vielleicht versteckt sich da irgendwo ein Bug.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Merkwürdiges Problem in Bashskript
Wenn ich eine nützliches Logging haben will, dann nutze ich in meine Scripten mein eigenes Logging. Simple Umleitung ist mir da zu unstrukturiert und hat zu wenige Informationen. D. h. ich werte alle Programmaufrufe aus und schreibe entsprechende Logeinträge, z. B. ins System-Log.
z. B. so:
Wenn das Programm größer ist, dann habe ich mehrere Loglevel (debug,info,notice,warn,error,critical,panic), womit ich dann gezielt im Log filtern kann.
z. B. so:
Code: Alles auswählen
#!/bin/bash
mylog() { logger -t mysqlbackup -p local7.info "$*"; }
myerr() { logger -t mysqlbackup -p local7.info "ERROR: $*"; }
...
if RES="$(mysqldump ...)" ; then
mylog "database backup of database $db successful"
else
mylog "database backup of database $db failed: $RES"
exit 1
fi
...
myerr "mysql binary not there, aborting backup"
Re: [erledigt] Merkwürdiges Problem in Bashskript
Das dürfte Absicht sein, ständiges Schreiben in eine Datei ohne Puffern muss man explizit anfordern:debmatrix hat geschrieben:23.08.2023 12:42:51Wenn ich nun mit "tail -f /var/log/install.log" das Loggen beobachte, dann sehe ich die Ausgabe vom Macchanger damit nicht.
man script hat geschrieben: -f, --flush
Flush output after each write. […] Note that flush has an impact on performance; it’s possible to use SIGUSR1 to flush logs on demand.
Manchmal bekannt als Just (another) Terminal Hacker.
Re: [erledigt] Merkwürdiges Problem in Bashskript
Ja, das ist richtig. Aber in diesem Fall meinte ich auch, dass selbst wenn die Log-Datei bereits vollständig geschrieben wurde und ich aus Faulheit nochmal "tail -f logdatei" im Terminal aufrufe, der Terminal trotzdem nachhaltig unbrauchbar wird. Das bedeutet, nicht nur während die Log-Datei im aktuellen Moment gerade beschrieben wird. Ich finde es sollte nicht passieren, dass der Terminal unbrauchbar bleibt, selbst nachdem ich tail mit strg+c abgebrochen habe. Ich muss den Terminal schließen und erneut öffnen, um ungestört weiterarbeiten zu können. Ich glaube immer noch, dass etwas passiert, das nicht beabsichtigt ist. Besonders, da ich das bei verschiedenen Distributionen und auch früheren Debian Versionen mit dem gleichen Skript noch nie erlebt habe. Leider habe ich jedoch keine Ahnung von solchen Dingen und kann es nicht weiter untersuchen.
Re: Merkwürdiges Problem in Bashskript
Allmählich gewinne ich den Eindruck, dass Debian endgültig kaputt ist.debmatrix hat geschrieben:23.08.2023 11:08:05... Das Ding ist, dass dieses Skript seit Jahren einwandfrei funktioniert hatte, bis Debian Bookworm installiert wurde.
Ich hatte extra "tee" dafür verwendet in der Hoffnung, dass die Eingabeaufforderung noch irgendwie überlebt, was ja früher auch der Fall war.
Nachdem ich vor etwa drei Wochen meinen Mac Mini mit Bookworm zu einer Gutenachtgeschichten-Vorlesemaschine gemacht hatte, stellte sich heraus, dass der IR-Empfang mal funktionierte, mal nicht. Keine Ahnung, was die Ursache war, aber seit ich Devuan draufgetan habe, funktioniert es zuverlässig.
Gruß
Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: [erledigt] Merkwürdiges Problem in Bashskript
Evtl. hilft Strg-L.debmatrix hat geschrieben:24.08.2023 21:34:58... Terminal trotzdem nachhaltig unbrauchbar wird. ...
HTH
Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: [erledigt] Merkwürdiges Problem in Bashskript
Kann es sein, daß in der Ausgabe irgendwo versehenlich das Zeichen 0x1C (Strg-S) ausgegeben wird? Das ist ein Steuerzeichen, mit dem der Ausgabestrom angehalten wird. Mit Strg-Q auf der Tastatur kann man die Ausgabe fortsetzen lassen.debmatrix hat geschrieben:24.08.2023 21:34:58...ich aus Faulheit nochmal "tail -f logdatei" im Terminal aufrufe, der Terminal trotzdem nachhaltig unbrauchbar wird.
Eigentlich sollten im Log keine Sonderzeichen stehen. Ich würde trotzdem mal schauen, ob das Log nur aus Zwichen größer 31 und kleine 127 besteht.