shell() antwortet mit Fehler

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

rammi22
****
Beiträge: 126
Registriert: Mo, 26.03.2012 02:59

Re: shell() antwortet mit Fehler

Beitrag von rammi22 »

Hiker hat geschrieben: So, 18.09.2022 19:18 Frage: was ist das Verzeichnis . also das aktuelle Verzeichnis ?
Das war der entscheidene Tipp...zwar stimmt der Pfad zum Skript, aber der Pfad zur erzeugten Datei muß auch absolut zum erwarteten Verzeichnis sein :-)
Also:

Code: Alles auswählen

<?php
//var_dump('test');
//echo 'done';

$file = "/home/rammi/Schreibtisch/Scanner/test_php.txt";
file_put_contents($file, 'test');

print_r('done');
Das Makro

Code: Alles auswählen

Sub CallScanReader
 php_script = "/home/rammi/Schreibtisch/Scanner/index.php"
 php = "/usr/bin/php"
 
  Dim starten as object
  starten = createUnoService("com.sun.star.system.SystemShellExecute")
  starten.execute(php, php_script, 0)
End Sub
Zuletzt geändert von rammi22 am So, 18.09.2022 20:00, insgesamt 1-mal geändert.
Gruss Rammi
----------------------------------------------------
Linux 22.04 | Win11 | LibreOffice 7.3.5.2
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: shell() antwortet mit Fehler

Beitrag von Karolus »

rammi22 hat geschrieben: So, 18.09.2022 18:55
Karolus hat geschrieben: So, 18.09.2022 18:45 ...in 95% brauchst du zunächst mal das …php dingens nicht...
Na ja, ich bin PHP-Entwickler und das auszuführende Skript löst eine umfangreiche PHP-Applikation aus. Da fehlt Wissen und Zeit, alles in ein Python-Skript zu bauen.
wie bereits gesagt für diese 5% gibts in python subprocess…
rammi22 hat geschrieben: So, 18.09.2022 18:55 Abgesehen davon denke ich, ist es total egal ob php oder sonst irgendwas. So ein Aufruf über eine UI wie OO sollte immer funktionieren.
"sollte funktionieren" …berühmte letzte Worte (Softwareentwickler)
rammi22 hat geschrieben: So, 18.09.2022 18:55 Ich denke, eventuell sind es die Pfade zu den Skripten, bei vielen Beiträge zum Thema shell() wird ja ein Windows-Nutzer vorrausgesetzt...
Du schliesst aus der Tatsache das es mehr Windows-benutzer als Linux-leute gibt, das es an den Pfadangaben liegt :roll:
rammi22 hat geschrieben: So, 18.09.2022 18:55 Ich habe das .php-Skript mit einem .sh Skript ausgetauscht, auch hier wird über das Terminal eine test.txt geschrieben aber über die Makro-Steuerung passiert nix

Code: Alles auswählen

Sub CallScanReader
 sh_script = "/home/rammi/Schreibtisch/Scanner/index.sh" 
 sh = "/usr/bin/sh"
 Shell(sh, "", sh_script, true)
End Sub
Das .sh Skript

Code: Alles auswählen

#!/bin/sh
# This is a comment!
echo Hello World ahb > ./test_sh.txt      # This is a comment, too!
ein vergleichbares .sh-script mit absoluter pfad-angabe im Script tut bei mir mit dem bereits beschriebenen Vorgehen via →→Formular/Webseite öffnen
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
rammi22
****
Beiträge: 126
Registriert: Mo, 26.03.2012 02:59

Re: shell() antwortet mit Fehler

Beitrag von rammi22 »

Karolus hat geschrieben: So, 18.09.2022 19:41 ein vergleichbares .sh-script mit absoluter pfad-angabe im Script tut bei mir mit dem bereits beschriebenen Vorgehen via →→Formular/Webseite öffnen
Es geht ja nun, siehe oben, vielen Dank
Gruss Rammi
----------------------------------------------------
Linux 22.04 | Win11 | LibreOffice 7.3.5.2
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: shell() antwortet mit Fehler

Beitrag von Karolus »

es funktioniert übrigens auch ohne Umleitung in eine Datei, das entscheidende dabei ist das du vorher Libreoffice aus einem Terminal startest:

Code: Alles auswählen

soffice --calc
die Basic-prozedur:

Code: Alles auswählen

Sub test_hello
 script = "/home/rammi/test.sh"
 Shell("/usr/bin/sh","-e" ,script )
    
End Sub
der Inhalt von "test.sh"

Code: Alles auswählen

#!/usr/bin/sh
echo "hello World"
Die Ausgabe erfolgt im Terminal-fenster aus dem du Libreoffice gestartet hast
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: shell() antwortet mit Fehler

Beitrag von Hiker »

rammi22 hat geschrieben: So, 18.09.2022 19:30 ...
Das war der entscheidene Tipp...zwar stimmt der Pfad zum Skript, aber der Pfad zur erzeugten Datei muß auch absolut zum erwarteten Verzeichnis sein :-)
...
Nicht unbedingt. Man muss nur berücksichtigen, dass es um das aktuelle Verzeichnis des Prozesses geht, was entweder das Verzeichnis sein kann aus dem das Programm gestartet wurde, oder von einer .desktop Datei gesetzt wird oder oder oder...- also nicht ist, worauf man sich verlassen kann.

Also könntest Du auch Dein Skript mit einem cd-Befehl beginnen oder auch das zu verwendende Verzeichnis als Parameter übergeben. (Oder im Skript herausfinden mit welchem Pfad es aufgerufen wurde.)

Nachdem der Anfang erstmal funktioniert, hast Du alle Möglichkeiten...
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
rammi22
****
Beiträge: 126
Registriert: Mo, 26.03.2012 02:59

Re: shell() antwortet mit Fehler

Beitrag von rammi22 »

Karolus hat geschrieben: So, 18.09.2022 20:28 ...
Die Ausgabe erfolgt im Terminal-fenster aus dem du Libreoffice gestartet hast
Das funktioniert (bei mir) nicht:
  • neues Dokument wird geöffnet
  • Terminal beendet Command:

    Code: Alles auswählen

    rammi@rammi-laptop-i7:~$ soffice --calc
    rammi@rammi-laptop-i7:~$ 
    
  • Schaltfläche im neuen Dokument eingefügt und mit Makro verbunden und ausgeführt (Klick)
Ergebnis: es wird nix im Terminal angezeigt, scheint mir ja auch unmöglich, weil das Terminal mit dem Starten eines neuen Dokument, das Kommando beendet und den Focus auf das Dokument dadurch verloren hat?!
Gruss Rammi
----------------------------------------------------
Linux 22.04 | Win11 | LibreOffice 7.3.5.2
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: shell() antwortet mit Fehler

Beitrag von Karolus »

Ich hab keine Ahnung was DU da anstellst, bei mir schliesst sich das Terminal NICHT (von selbst) nach absetzen des Befehls

Code: Alles auswählen

…$ soffice --calc 
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: shell() antwortet mit Fehler

Beitrag von Karolus »

Mglw. läuft bei dir bereits ein soffice-process im Hintergrund (aka Schnellstarter?) der okkupiert dann den neu gestarteten und letzterer kehrt zur Befehlszeile zurück?
das kannst du nachprüfen indem du alle Dokumente schliesst, und im Terminal den Befehl:

Code: Alles auswählen

$ top | grep soffice
absetzt, und ggf. eine Weile wartest…

oder einfach mal:

Code: Alles auswählen

$ killall soffice
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
rammi22
****
Beiträge: 126
Registriert: Mo, 26.03.2012 02:59

Re: shell() antwortet mit Fehler

Beitrag von rammi22 »

Karolus hat geschrieben: Mo, 19.09.2022 11:36 Mglw. läuft bei dir bereits ein soffice-process im Hintergrund (aka Schnellstarter?) der okkupiert dann den neu gestarteten...
Ja, das war das Problem
Gruss Rammi
----------------------------------------------------
Linux 22.04 | Win11 | LibreOffice 7.3.5.2
Antworten