[gelöscht] Merkwürdiges Problem in Bashskript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
debmatrix
Beiträge: 63
Registriert: 12.06.2023 07:48:06

[gelöscht] Merkwürdiges Problem in Bashskript

Beitrag von debmatrix » 23.08.2023 10:04:52

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

NoPaste-Eintrag41950

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.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Merkwürdiges Problem in Bashskript

Beitrag von heisenberg » 23.08.2023 10:30:55

Kannst Du wesentliche Bereiche in Deinem Bash-Script mal in folgende Befehle einfassen...

Code: Alles auswählen

set -x

...
...
...

set +x
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.)
Jede Rohheit hat ihren Ursprung in einer Schwäche.

debmatrix
Beiträge: 63
Registriert: 12.06.2023 07:48:06

Re: Merkwürdiges Problem in Bashskript

Beitrag von debmatrix » 23.08.2023 11:08:05

Danke. Ich habe den Fehler jetzt gefunden. Es liegt an folgender Zeile:

Code: Alles auswählen

sudo $PACKAGEMANAGER ./${1}/${OS}/*.$ENDUNG | sudo tee -a /var/log/install.log
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.

joka63
Beiträge: 24
Registriert: 20.07.2023 23:18:50

Re: Merkwürdiges Problem in Bashskript

Beitrag von joka63 » 23.08.2023 12:11:38

debmatrix hat geschrieben: ↑ zum Beitrag ↑
23.08.2023 11:08:05
Danke. Ich habe den Fehler jetzt gefunden. Es liegt an folgender Zeile:

Code: Alles auswählen

sudo $PACKAGEMANAGER ./${1}/${OS}/*.$ENDUNG | sudo tee -a /var/log/install.log
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?
Dafür gibt es das Kommando 'script', das Terminalausgaben einer Sitzung oder eines Kommandos loggen kann.
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)

debmatrix
Beiträge: 63
Registriert: 12.06.2023 07:48:06

Re: Merkwürdiges Problem in Bashskript

Beitrag von debmatrix » 23.08.2023 12:42:51

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.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Merkwürdiges Problem in Bashskript

Beitrag von heisenberg » 23.08.2023 13:33:27

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:

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"
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.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

debmatrix
Beiträge: 63
Registriert: 12.06.2023 07:48:06

Re: [erledigt] Merkwürdiges Problem in Bashskript

Beitrag von debmatrix » 23.08.2023 13:39:08

Danke euch.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: [erledigt] Merkwürdiges Problem in Bashskript

Beitrag von JTH » 23.08.2023 13:50:00

debmatrix hat geschrieben: ↑ zum Beitrag ↑
23.08.2023 12:42:51
Wenn ich nun mit "tail -f /var/log/install.log" das Loggen beobachte, dann sehe ich die Ausgabe vom Macchanger damit nicht.
Das dürfte Absicht sein, ständiges Schreiben in eine Datei ohne Puffern muss man explizit anfordern:
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.

debmatrix
Beiträge: 63
Registriert: 12.06.2023 07:48:06

Re: [erledigt] Merkwürdiges Problem in Bashskript

Beitrag von debmatrix » 24.08.2023 21:34:58

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.

Benutzeravatar
GregorS
Beiträge: 2628
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: Merkwürdiges Problem in Bashskript

Beitrag von GregorS » 24.08.2023 22:06:02

debmatrix hat geschrieben: ↑ zum Beitrag ↑
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.
Allmählich gewinne ich den Eindruck, dass Debian endgültig kaputt ist.

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])

Benutzeravatar
GregorS
Beiträge: 2628
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: [erledigt] Merkwürdiges Problem in Bashskript

Beitrag von GregorS » 25.08.2023 01:34:51

debmatrix hat geschrieben: ↑ zum Beitrag ↑
24.08.2023 21:34:58
... Terminal trotzdem nachhaltig unbrauchbar wird. ...
Evtl. hilft Strg-L.

HTH

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: [erledigt] Merkwürdiges Problem in Bashskript

Beitrag von MSfree » 25.08.2023 08:12:42

debmatrix hat geschrieben: ↑ zum Beitrag ↑
24.08.2023 21:34:58
...ich aus Faulheit nochmal "tail -f logdatei" im Terminal aufrufe, der Terminal trotzdem nachhaltig unbrauchbar wird.
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.

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.

Antworten