ubuntuusers.de

Programm fuer das verwalten und ausfuehren mehrerer Befehle.

Status: Ungelöst | Ubuntu-Version: Ubuntu MATE 20.04 (Focal Fossa)
Antworten |

Robert_Zenz

Avatar von Robert_Zenz

Anmeldungsdatum:
5. August 2006

Beiträge: 239

Ich habe den Fall dass ich gerne mehrere Kommandos ausfuehren will welche immer die gleichen sind, und zwar etwas komfortabler als "nur" ein Skript. Ein vereinfachtes Beispiel waere so etwas:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
rm -rf $HOME/.cache/bla/*
rm -rf $HOME/.cache/bla2/*

$HOME/directory/some-script.sh

rsync /local/directory remote:/somewhere
rsync /another/local/directory remote:/elsewhere

rsync remote:/yet/another/location /local/more/locations

someothercommand
someothercommand2

Also eigentlich will ich ein Skript, aber halt ein Skript in welchem ich sowohl auf einen Blick sehe welche Kommandos funktioniert haben und welche nicht, als auch mir optional die Ausgabe anschauen kann von allen Kommandos.

Ich habe mir vor Jahren ein Helfer-System gebaut welches das schon fast tut, aber es ist eben ziemlich zusammen geschustert und schluckt auch die Kommando Ausgaben. Das sieht dann in etwa so aus:

1
2
3
task "Name Task #1" command parameters
task "Name Task #2" command parameters
task "Name Task #3" command parameters
[  0] Name Task #1
[255] Name Task #2
[  2] Name Task #3

Die Ausgabe wird immer auf eine Zeile reduziert und direkt unter dem aktuellen Kommando angezeigt, quasi als laufender Text:

[  0] Name Task #1
[   ] Name Task #2
Currently running step x...

Das hat den Vorteil dass ich direkt sehen kann welche Kommandos funktioniert haben, welche nicht und welches gerade ausgefuehrt wird, aber auf der anderen Seite ist die Ausgabe weg und es gibt da noch ein paar andere Probleme mit der Anzeige (das hin und her springen im Terminal zerbricht hier und da, das zeilenweise lesen bedeutet das man teilweise die neueste Ausgabe nicht sieht und noch so ein paar Sachen). Zu einer GUI Loesung wuerde ich jetzt auch nicht unbedingt Nein sagen, man wird ja doch aelter.

Eine Idee dir mir letztens kam ist tmux fuer die Anwendung zu missbrauchen, aber ich habe leider keinen guten Ansatz dafuer gefunden. Meine Idee war fuer jedes Kommando eine tmux Pane zu machen und es darin auszufuehren, diese dann aber zu minimieren auf nur die Titelzeile, was aber anscheinend so nicht geht wenn ich die Dokumentation richtig verstanden habe.

Jemand eine Idee dazu oder Vorschlaege?

Bearbeitet von umbhaki:

In besser geeignetes Forum verschoben.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11258

Wohnort: München

Du könntest dir mal Ansible ansehen - wobei das standardmäßig beim ersten fehlgeschlagenen Task abbricht, wenn man nicht explizit vorgibt, dass es den Fehlerfall übergehen soll.

Es gibt z.B. auch Ansible Tower, um die Playbooks aus einer GUI heraus auszuführen.

Robert_Zenz

(Themenstarter)
Avatar von Robert_Zenz

Anmeldungsdatum:
5. August 2006

Beiträge: 239

Waere eine Idee, wirkt aber etwas uebertrieben fuer meinen Anwendungsfall. Ist aber vielleicht ein guter Ansatz.

juribel

Anmeldungsdatum:
20. April 2014

Beiträge: 1246

Warum schreibst du nicht einfach alles in eine Office-Datei? Da kannst du alles reinschreiben, auch die Ergebnisse der Programmaufrufe oder Bildschirmfotos, du kannst copypasten, mit Überschriften nach Themen gruppieren, alles was man braucht. Keep it simple, stupid!

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11258

Wohnort: München

Lieber in eine Emacs org-mode Datei - da kann man Code-Blöcke bei Bedarf direkt ausführen lassen - Stichwort literate DevOps: https://howardism.org/Technical/Emacs/literate-devops.html

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

willst / musst du das "live" sehen, also du sitzt bei der Ausführung vor dem Rechner? Oder willst du hinterher / am nächsten Tag / whenever nachschauen?

Gruß, noisefloor

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9680

Wohnort: Münster

Eine sofort umsetzbare Methode wäre, einfach die Möglichkeiten der ausführenden Shell einzusetzen. Die Bash kennt z.B. die Optionen -e und -x.

Robert_Zenz

(Themenstarter)
Avatar von Robert_Zenz

Anmeldungsdatum:
5. August 2006

Beiträge: 239

juribel schrieb:

Warum schreibst du nicht einfach alles in eine Office-Datei? Da kannst du alles reinschreiben, auch die Ergebnisse der Programmaufrufe oder Bildschirmfotos, du kannst copypasten, mit Überschriften nach Themen gruppieren, alles was man braucht. Keep it simple, stupid!

Also mir geht es primaer um die Aufrufbarkeit.

seahawk1986 schrieb:

Lieber in eine Emacs org-mode Datei - da kann man Code-Blöcke bei Bedarf direkt ausführen lassen - Stichwort literate DevOps: https://howardism.org/Technical/Emacs/literate-devops.html

Boah, das muss ich mir genauer ansehen. Das muss erstmal in meinem Kopf ankommen was das alles kann, wirkt beeindruckend.

noisefloor schrieb:

willst / musst du das "live" sehen, also du sitzt bei der Ausführung vor dem Rechner? Oder willst du hinterher / am nächsten Tag / whenever nachschauen?

Live waere schoen, deswegen die Aufbereitung in schoene Ueberschriften und was funktioniert hat und was nicht.

kB schrieb:

Eine sofort umsetzbare Methode wäre, einfach die Möglichkeiten der ausführenden Shell einzusetzen. Die Bash kennt z.B. die Optionen -e und -x.

Wie gesagt, ich habe ja ein Shell-Skript welches das grob zusammen schustert, aber es ist halt genau das, grob zusammengeschustert. Nachdem ich nichts gefunden habe zu dem Thema, dachte ich mal ich frage mal ob jemand so ein Programm kennt welches das schoener aufbereitet.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13194

kB schrieb:

Eine sofort umsetzbare Methode wäre, einfach die Möglichkeiten der ausführenden Shell einzusetzen. Die Bash kennt z.B. die Optionen -e und -x.

Das wäre auch mein Vorschlag. Ein Muster, das ich oft verwende, sieht so aus:

1
2
3
4
5
6
7
8
9
#!/bin/sh

# debug
[ -z "$DEBUG" ] || set -x

# exit on first error
set -e

# eigentlicher Skriptcode

Dann kann man die Debug-Ausgabe, die alle Befehle und Argumente zeigt, über die Umgebungsvariable DEBUG einschalten:

Normal

1
$ script arg1 arg2

Debug

1
$ DEBUG=x script arg1 arg2

oder so

1
2
$ export DEBUG=f
$ script arg1 arg2

Das schöne ist, dass sich die Debug-Ausgabe "vererbt", wenn das Skript weitere Skripte aufruft.

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1261

Leider muss ich gestehen, deine wirkliche Anforderung nicht vollständig verstanden zu haben.

Allerdings hat deine Reaktion bezüglich des Hinweises auf "literate-DevOps" mit Emacs mich vermuten lassen, dass es für dich auch interessant sein könnte, sich "cherrytree" mal anzuschauen. Hier kannst du deine Elemente (Kommandos) auch hierarchisch gruppieren, Informationen (rich-text, Bilder, Einbettungen, Links usw) beifügen und über "CodeBoxes" die ausführbaren Befehle (z.B. bash) einbetten und mit der F5 Taste ausführen (in internen oder externen Terminal). Ergebnisausgaben lassen sich dann ebenfalls in Codeblocks oder Tabellen (für Kommentare) eintragen.

Dieser "cherrytree" Ansatz kombiniert Ideen von "Mindmap", "Office" und "Entwicklung" mit "Hierarchischer Dokumentation". Alles, was du an bash-Tools hast, kannst du da natürlich auch verwenden.

Robert_Zenz

(Themenstarter)
Avatar von Robert_Zenz

Anmeldungsdatum:
5. August 2006

Beiträge: 239

shiro schrieb:

Leider muss ich gestehen, deine wirkliche Anforderung nicht vollständig verstanden zu haben.

Ja, habe ich vielleicht auch nicht gut genug erklaert. Im Moment habe ich alle Befehle in einem Skript, aber ich suche eben nach einer Moeglichkeit um einen Stapel Befehle auszufuehren und dann das Ergebnis uebersichtlich praesentiert zu bekommen. Wobei "uebersichtlich" hier sehr loese definiert ist, weil ich eigentlich nicht weisz was genau ich will.

shiro schrieb:

Allerdings hat deine Reaktion bezüglich des Hinweises auf "literate-DevOps" mit Emacs mich vermuten lassen, dass es für dich auch interessant sein könnte, sich "cherrytree" mal anzuschauen. Hier kannst du deine Elemente (Kommandos) auch hierarchisch gruppieren, Informationen (rich-text, Bilder, Einbettungen, Links usw) beifügen und über "CodeBoxes" die ausführbaren Befehle (z.B. bash) einbetten und mit der F5 Taste ausführen (in internen oder externen Terminal). Ergebnisausgaben lassen sich dann ebenfalls in Codeblocks oder Tabellen (für Kommentare) eintragen.

Das sind wirklich coole Sachen! Nicht ganz was ich gesucht habe, weil ich weniger die Dokumentation brauche und dafuer das Stapel-Ausfuehren.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13194

Robert_Zenz schrieb:

Ja, habe ich vielleicht auch nicht gut genug erklaert. Im Moment habe ich alle Befehle in einem Skript, aber ich suche eben nach einer Moeglichkeit um einen Stapel Befehle auszufuehren und dann das Ergebnis uebersichtlich praesentiert zu bekommen. Wobei "uebersichtlich" hier sehr loese definiert ist, weil ich eigentlich nicht weisz was genau ich will.

Was ist denn das Ergebnis? Ich meine, es gibt ja keine allgemeingültige übersichtliche Darstellung für beliebige Daten. Was übersichtlich ist und wie man das herstellt, hängt ja entscheidend von der Ausgabe ab.

Robert_Zenz

(Themenstarter)
Avatar von Robert_Zenz

Anmeldungsdatum:
5. August 2006

Beiträge: 239

rklm schrieb:

Was ist denn das Ergebnis? Ich meine, es gibt ja keine allgemeingültige übersichtliche Darstellung für beliebige Daten. Was übersichtlich ist und wie man das herstellt, hängt ja entscheidend von der Ausgabe ab.

Ja, ich hatte mir eine Art Anzeige vorgestellt welche die Befehle auflistet, vielleicht mit schoenen Titeln, dann das Ergebnis (also Exit Code) und mir dann noch die Moeglichkeit gibt nach belieben die Ausgabe zu betrachten.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13194

Robert_Zenz schrieb:

Ja, ich hatte mir eine Art Anzeige vorgestellt welche die Befehle auflistet, vielleicht mit schoenen Titeln, dann das Ergebnis (also Exit Code) und mir dann noch die Moeglichkeit gibt nach belieben die Ausgabe zu betrachten.

Merci! Das klingt für mich, als ob Du eine grafische Anwendung suchst, die

  • Gespeicherte Skripte ausführen kann

  • Ausführungen speichert

  • Für jede Ausführung und jeden Befehl im Skript den Exit-Status sowie die Ausgabe anzeigen kann

Das klingt recht aufwändig für mich. Abgesehen davon, wüsste ich nicht, wie man die Anforderung einzelne Rückgabewerte und Ausgaben zu bekommen damit überein bringt, ein Skript auszuführen. Denn so ein Skript ist ja üblicherweise keine einfache Liste von Befehlen mit Argumenten, sondern enthält Ablaufsteuerung (if, while usw.) und anderes, das über mehrere Zeilen wirkt (Variablezuweisung und -zugriff). Da bräuchte man eine spezielle Shell. Vielleicht gibt es so etwas, aber ich kenne es nicht.

Ich weiß nicht, wofür das letztlich gebraucht wird, deshalb kann ich da jetzt auch keine Alternative vorschlagen (außer Emacs vielleicht - der kann ja alles 😉).

Robert_Zenz

(Themenstarter)
Avatar von Robert_Zenz

Anmeldungsdatum:
5. August 2006

Beiträge: 239

rklm schrieb:

Merci! Das klingt für mich, als ob Du eine grafische Anwendung suchst, die

  • Gespeicherte Skripte ausführen kann

  • Ausführungen speichert

  • Für jede Ausführung und jeden Befehl im Skript den Exit-Status sowie die Ausgabe anzeigen kann

Genau, fast, kein Skript sondern eben eine Liste an Befehlen. Dachte mir, vielleicht kennt jemand sowas schon.rklm schrieb:

rklm schrieb:

Ich weiß nicht, wofür das letztlich gebraucht wird, deshalb kann ich da jetzt auch keine Alternative vorschlagen (außer Emacs vielleicht - der kann ja alles 😉).

Als Ersatz von recht einfachen Bash-Skripten (Dinge von A nach B kopieren, Dateien umbennen, Ordner aufraeumen und so weiter).

Antworten |