Seite 2 von 2
Re: shell() antwortet mit Fehler
Verfasst: So, 18.09.2022 19:30
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
Re: shell() antwortet mit Fehler
Verfasst: So, 18.09.2022 19:41
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
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
Re: shell() antwortet mit Fehler
Verfasst: So, 18.09.2022 20:02
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
Re: shell() antwortet mit Fehler
Verfasst: So, 18.09.2022 20:28
von Karolus
es funktioniert übrigens auch ohne Umleitung in eine Datei, das entscheidende dabei ist das du
vorher Libreoffice aus einem Terminal startest:
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"
Die Ausgabe erfolgt im
Terminal-fenster aus dem du Libreoffice gestartet hast
Re: shell() antwortet mit Fehler
Verfasst: So, 18.09.2022 22:19
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...
Re: shell() antwortet mit Fehler
Verfasst: Mo, 19.09.2022 10:34
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?!
Re: shell() antwortet mit Fehler
Verfasst: Mo, 19.09.2022 11:13
von Karolus
Ich hab keine Ahnung was DU da anstellst, bei mir schliesst sich das Terminal NICHT (von selbst) nach absetzen des Befehls
Re: shell() antwortet mit Fehler
Verfasst: Mo, 19.09.2022 11:36
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:
absetzt, und ggf. eine Weile wartest…
oder einfach mal:
Re: shell() antwortet mit Fehler
Verfasst: Mo, 19.09.2022 14:25
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