BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[Gelöst] Shell()-Befehl unter Linux und bsync-Parameter

Alles zur Programmierung im LibreOffice.
herz4
Beiträge: 52
Registriert: Sa 17. Dez 2016, 16:11

[Gelöst] Shell()-Befehl unter Linux und bsync-Parameter

Beitrag von herz4 » Mi 10. Mär 2021, 07:23

Der Shell()-Befehl unter Linux lässt sich nach meiner Beobachtung (immer noch) nicht durch den bsync-Parameter, den letzten, dazu veranlassen, mit der Script-Abarbeitung zu warten, bis der Shell()-Befehl abgearbeitet ist. Oder?

Gibt es dafür einen besseren Ersatz, als ich es bisher programmiere, so dass das Script wartet:

Code: Alles auswählen

MsgBox "Fehler: " + Shell("gnome-terminal", 1, "-- ssh ...")
Hier wird also eine Meldung mit dem Shell()-Befehl zusammen erzeugt, die "Fehler: 0" anzeigt, wenn der Shell()-Befehl "gefressen" wurde, und von mir nach Abarbeitung des Terminalbefehls per OK-Button geschlossen werden muss, damit das Script weiter arbeitet. Unelegant - aber wirkt zumindest "wartend".
Zuletzt geändert von herz4 am So 13. Feb 2022, 19:35, insgesamt 2-mal geändert.
:? 2024-02-26 Linux Mint 20.1 64bit Ulyssa base: Ubuntu 20.04 focal, Cinnamon 4.8.6, Linux-Kernel 5.15.0-97-generic, LO Version: 6.4.7.2 Build-ID: 1:6.4.7-0ubuntu0.20.04.9, HSQL Database Engine 2.5.0 extern mit org.hsqldb.jdbcDriver

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Shell()-Befehl unter Linux und bsync-Parameter

Beitrag von gogo » Mi 10. Mär 2021, 08:48

Code: Alles auswählen

foo = shell("gnome-terminal", 1, "-- ssh ...")
sollte auf die Ausgabe des Kommandos "shell" warten und dann erst - ohne weitere Rückfrage im code weitermachen.
Alternativ kannst Du auch das Shell-Kommando eine Datei erstellen lassen und in einem Loop checken ob's die Datei schon gibt ... viele viele Möglichkeiten ...
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

herz4
Beiträge: 52
Registriert: Sa 17. Dez 2016, 16:11

Re: Shell()-Befehl unter Linux und bsync-Parameter

Beitrag von herz4 » Mi 10. Mär 2021, 11:20

gogo hat geschrieben:
Mi 10. Mär 2021, 08:48

Code: Alles auswählen

foo = shell("gnome-terminal", 1, "-- ssh ...")
sollte auf die Ausgabe des Kommandos "shell" warten und dann erst - ohne weitere Rückfrage im code weitermachen ...
Leider funzt das in meiner Umgebung nicht! Shell() gibt unmittelbar nach Aufruf den Fehlercode, hier "0", zurück, womit dann auch "foo" zugewiesen wurde, und die "Fahrt" geht dann weiter ...

Das mit dem Loop ist natürlich elegant, wenn man zu lange warten müsste, wenn 's vielleicht mehrere Minuten brauchen wollte. Bei mir sind es ~20s, die warte ich und "Enter". Aber ich fragte mich eben, a) bin ich - noch immer - zu blöd, shell() richtig einzusetzen, und b) gibt es nicht was - wirklich - Elegantes ;)

Jedenfalls danke ich für Deine Anregung. Vielleicht kannst Du noch ein, zwei gucken lassen?
:? 2024-02-26 Linux Mint 20.1 64bit Ulyssa base: Ubuntu 20.04 focal, Cinnamon 4.8.6, Linux-Kernel 5.15.0-97-generic, LO Version: 6.4.7.2 Build-ID: 1:6.4.7-0ubuntu0.20.04.9, HSQL Database Engine 2.5.0 extern mit org.hsqldb.jdbcDriver

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Shell()-Befehl unter Linux und bsync-Parameter

Beitrag von gogo » Mi 10. Mär 2021, 15:15

...Shell() gibt unmittelbar nach Aufruf den Fehlercode, hier "0"...
dann ist das Kommando auch beendet...
hast Du die shell-Funktion korrekt angewendet? So wie dein Code aussieht nämlich nicht:

Code: Alles auswählen

'FALSCH:
Shell("gnome-terminal", 1, "-- ssh ...")
'RICHTIG:
Shell("gnome-terminal", 1, "-- ssh ...", True)
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

herz4
Beiträge: 52
Registriert: Sa 17. Dez 2016, 16:11

Re: Shell()-Befehl unter Linux und bsync-Parameter

Beitrag von herz4 » Mi 10. Mär 2021, 18:00

Danke für Deine weitere Anregung bzw. Nachfrage.

Ich habe erneut getestet, nunmehr nochmals und mit dem (nicht funktionierenden) bsync-Parameter, also mit
gogo hat geschrieben:
Mi 10. Mär 2021, 15:15
Shell("gnome-terminal", 1, "-- ssh ...", True)
und es wird NICHT angehalten.

Problem dahinter sind doch nach meinem Halbwissen die Prozesssteuerungen, die sich zwischen Linux und Win sehr unterscheiden. Linux benutzt gegeneinander abgeschottete Threads(?), deren Nummern(?) man wohl mit viel Aufwand auch jeweils ermitteln kann. Aber wohl selbst mit diesen Prozessnummern ist es vermeintlich nicht so ohne weiteres möglich, deren Beendigung "vermelden" zu lassen.

Der Shell()-Befehl wird umgehend nach dessen Absetzen mit Fehlercode quittiert und also - durch nichts - erst später!(?)
:? 2024-02-26 Linux Mint 20.1 64bit Ulyssa base: Ubuntu 20.04 focal, Cinnamon 4.8.6, Linux-Kernel 5.15.0-97-generic, LO Version: 6.4.7.2 Build-ID: 1:6.4.7-0ubuntu0.20.04.9, HSQL Database Engine 2.5.0 extern mit org.hsqldb.jdbcDriver

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Shell()-Befehl unter Linux und bsync-Parameter

Beitrag von gogo » Mi 10. Mär 2021, 21:03

die 0 die Du als "Fehlercode" zurückbekommst ist der Exit-Status des Programms (in Deinem Fall ist das "gnome-terminal") - und 0 bedeutet: KEIN Fehler ist aufgetreten.
Einen Syntaxfehler (und "-- ssh ..." ist sicher einer) wird als "Programmende" von "-- ssh ..." interpretiert und das Terminal schließt sich OHNE FEHLER da gnome-terminal keinen solchen verursacht hat - damit kann der LO-Makro-Code weiterlaufen.

Ich hab' hier ein Kubuntu 20.04 mit LO 6.4.6.2 und da funktioniert der Shell-Befehl wie er soll.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

herz4
Beiträge: 52
Registriert: Sa 17. Dez 2016, 16:11

Re: Shell()-Befehl unter Linux und bsync-Parameter

Beitrag von herz4 » Do 11. Mär 2021, 14:54

Danke gogo.

Zwischen Kubuntu und anderen Ubuntu-Versionen vermute ich keinen so großen Unterschied, als dass nicht zu hoffen steht, dass in allen diesen LO mit dem Shell()-Befehl incl. bsync funzt.

Somit steht für mich sogar das Umgekehrte zu befürchten. Ist Linux Mint eine der wenigen(?) Distros, wo er nicht geht?

Mit gespannter Neugierde, herz4
:? 2024-02-26 Linux Mint 20.1 64bit Ulyssa base: Ubuntu 20.04 focal, Cinnamon 4.8.6, Linux-Kernel 5.15.0-97-generic, LO Version: 6.4.7.2 Build-ID: 1:6.4.7-0ubuntu0.20.04.9, HSQL Database Engine 2.5.0 extern mit org.hsqldb.jdbcDriver

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Shell()-Befehl unter Linux und bsync-Parameter

Beitrag von gogo » Do 11. Mär 2021, 15:08

Code: Alles auswählen

sub test
	shell("gnome-terminal", 1, "-e '/bin/bash -i'", True)
	print "Fertig"
end sub
Sofern "-e" der richtige Parameter für "gnome-terminal" ist, sollte dieses Makro warten, bis Du das Terminal-Fenster geschlossen hast.

poste doch mal die gesamte Codezeile deines Makros. Es liegt mit Sicherheit am shell-Kommando.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

herz4
Beiträge: 52
Registriert: Sa 17. Dez 2016, 16:11

Re: Shell()-Befehl unter Linux und bsync-Parameter

Beitrag von herz4 » Do 11. Mär 2021, 15:53

Gogo, ich habe eben Dein "test"-Makro durchlaufen lassen. Wie eh, das Terminalfenster ploppt auf und die Meldung "Fertig" ist dahinter schon da, oder anders, schiebe ich das Terminalfenster beiseite, dann ist da die "Fertig"-Meldung. Leider wartet hier "nichts", außer ich selbst auf den richtigen Gedanken ...

Danke für Deine Mühe und Deine Suche nach Lösung.
:? 2024-02-26 Linux Mint 20.1 64bit Ulyssa base: Ubuntu 20.04 focal, Cinnamon 4.8.6, Linux-Kernel 5.15.0-97-generic, LO Version: 6.4.7.2 Build-ID: 1:6.4.7-0ubuntu0.20.04.9, HSQL Database Engine 2.5.0 extern mit org.hsqldb.jdbcDriver

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Shell()-Befehl unter Linux und bsync-Parameter

Beitrag von gogo » Do 11. Mär 2021, 18:08

ist "-e" der richtige Parameter für "gnome-terminal"? Manchmal ist der auch "-c". Mit einer aktuellen Mint-Version kann ich derzeit leider nicht testen.
Steht im Terminalfenster, das aufpoppt, irgendwas außer dem Prompt?
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten