Shell-Script direkt im Terminal ausführen: Ausführen Kindprozess fehlgeschlagen

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Shell-Script direkt im Terminal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von Richard » 13.02.2019 17:54:23

Hallo,

ich habe für meine SSH-Verbindungen zum HTPC und zum Raspberry Pi im Homeordner Scripte liegen auf die ich einfach doppelt klicke und die Verbindung zum SSH-Server wird aufgebaut. Die Scripte sehen so aus:

Code: Alles auswählen

xfce4-terminal -e "ssh -i /home/richard/.htpc user@192.168.10.23"
/home/richard/.htpc ist die Schlüsseldatei für den Verbindungsaufbau ohen Passworteingabe, das 'xfce4-terminal' davor hab ich damit das ganze in einem neuen Fenster gestartet wird. Das ganze funktionierte mit Dolphin sehr gut. Jetzt mit Thunar geht das nicht mehr. Wenn ich da doppelt drauf klicke wird ein Temrinalfenster geöffnet mit dem Hinweis
Ausführen des Kindprozess ist fehlgeschlagen
Kindprozess "SSH-Verbindung" konnte nicht ausgeführt werden
(Datei oder Verzeichnis nicht gefunden)
Die Datei heißt tatsächlich "SSH-Verbindung HTPC", also mit Leerzeichen. Lasse ich das Leerzeichen weg, geht es. Das kann es aber nicht sein, da ich das ganze auch für andere Shellscripte nutzen will und ich wll da nicht überall die Leerzeichen löschen müssen.

Interessant ist, dass das ganze auch über das Terminal nicht geht. Wenn ich da z. B.
xfce4-terminal -e "SSH-Verbindung HTPC"
ausführe kommt die gleiche Meldung, auch wenn ich mit ' ' maskiere oder statt Quotes das Leerzeichen mit '\ ’ maskiere.
Zuletzt geändert von Richard am 16.02.2019 11:32:48, insgesamt 1-mal geändert.

TomL

Re: Shell-Script direkt im Temrinal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von TomL » 13.02.2019 20:03:12

Richard hat geschrieben: ↑ zum Beitrag ↑
13.02.2019 17:54:23
Die Scripte sehen so aus:

Code: Alles auswählen

xfce4-terminal -e "ssh -i /home/richard/.htpc user@192.168.10.23"
Eigentlich ist das kein Script, sondern nur eine zusammenhanglose Text-Zeile. Ob die Datei, die diese Zeile enthält, ein gültiges Script ist, kann man jetzt leider nur vermuten.
Richard hat geschrieben: ↑ zum Beitrag ↑
13.02.2019 17:54:23
Interessant ist, dass das ganze auch über das Terminal nicht geht. Wenn ich da z. B.

Code: Alles auswählen

xfce4-terminal -e "SSH-Verbindung HTPC"
Nehmen wir mal an, Du hättest ein Programm, was tatsächlich nur "SSH-Verbindung" heisst, und Du würdest dem Programm beim Aufruf als Parameter "HTPC" übergeben wollen, weil das der PC ist, mit dem Du Dich verbinden möchest. Wie müsste dazu die Befehlszeile aussehen?

gugus
Beiträge: 376
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: Shell-Script direkt im Temrinal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von gugus » 13.02.2019 20:13:49

Servus
Ich weiss nicht genau was Du haben möchtest aber ssh ohne passwort mit keyfile ist an sich kein Problem.

Ich habe es so etwas für mein Backup eingerichtet sodass ein "ssh server" genügt.
Login ohne Passwort für Backup

Keyfile erstellen und config

Wenn alle Standarddefinitionen genommen werden muss nichts Zusätzliches konfiguriert werden. Weicht man von den Standards ab müssen via config Datei die Anpassungen vorgenommen werden.

Server ist der Server oder PC mit den zu sichernden Dateien
Backupserver ist der Server (Raspi) der die Dateien sichert und speichert

Auf dem Server:

nano /etc/ssh/sshd.conf -> PermitRootLogin yes

Auf dem Backupserver (einmalig zu erstellen):

Ab Debian Jessie wird der Schlüssel erstelt mit:
ssh-keygen -o -a 100 -t ed25519 – key erstellen kein PW angeben

danach den Schlüssel auf den zu sichernden Server kopieren:
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@fileserver – public key kopieren

einloggen:
ssh root@fileserver (oder als root „ssh fileserver“) – einloggen ohne passwort

Das geht auch als user.

Gerade noch gefunden, Kurzform:

Code: Alles auswählen

On the client:

$ ssh-keygen
$ ssh-copy-id [user]@[server-ip]

Done!
Gruss

Richard
Beiträge: 639
Registriert: 11.10.2012 14:18:37
Lizenz eigener Beiträge: GNU General Public License

Re: Shell-Script direkt im Temrinal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von Richard » 14.02.2019 11:21:55

TomL hat geschrieben: ↑ zum Beitrag ↑
13.02.2019 20:03:12
Nehmen wir mal an, Du hättest ein Programm, was tatsächlich nur "SSH-Verbindung" heisst, und Du würdest dem Programm beim Aufruf als Parameter "HTPC" übergeben wollen, weil das der PC ist, mit dem Du Dich verbinden möchest. Wie müsste dazu die Befehlszeile aussehen?
Sorry, aber ich weiss nicht was du mir hier sagen willst.

Ich will lediglich das gleiche verhalten wie unter dolphin. Doppelklick auf das script verbindet zum Server.

@ gugus

Das Problem ist hier nur, dass das script nicht so ausgeführt wird wie es soll. SSH geht auch mit keyfile.

gugus
Beiträge: 376
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: Shell-Script direkt im Temrinal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von gugus » 14.02.2019 13:15:12

OK, kannst Du mal bitte das ganze script zeigen, und eine Ausgabe von ls -al vom Script.

Benutzeravatar
detix
Beiträge: 1702
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: Shell-Script direkt im Temrinal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von detix » 14.02.2019 14:07:46

Falls das Problem nur diesen einen Rechner betrifft, wäre es dort möglich ein kleines zusätzliches Startskript unterzubringen?
ZB als Start_ssh, ohne Leerzeichen im Namen:

Code: Alles auswählen

#!/bin/sh
"SSH-Verbindung HTPC"
Mir stehen hier nur konsole und xterm zur Verfügung, aber neben deinem

Code: Alles auswählen

xfce4-terminal -e "SSH-Verbindung HTPC"
xterm -e "SSH-Verbindung HTPC"
konsole -e "SSH-Verbindung HTPC"
funktionieren auch die anderen beiden nicht, Leerzeichen scheinen hier unmöglich zu maskieren zu sein.
Ein Doppelklick auf die ausführbare Start_ssh funktioniert allerdings.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

gugus
Beiträge: 376
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: Shell-Script direkt im Temrinal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von gugus » 14.02.2019 14:40:12

so mal geraten, woher weiss der interpreter wo das script liegt, ist der Pfad in allgemeinen Pfad enthalten.
Ansonsten prüfe mal ob es unter Angabe des Pfades auch nicht läuft.

Aslo entweder vom selben Verzeichnis aus mit
konsole -e "./SSH-Verbindung HTPC"

oder konsole -e "/home/wasauchimmer/SSH-Verbindung HTTPC"

Edit: wo ist die Ausgabe von ls -al "SSH....."

Benutzeravatar
detix
Beiträge: 1702
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: Shell-Script direkt im Temrinal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von detix » 14.02.2019 15:54:06

Diese Meldung erscheint mir eindeutig:
Kindprozess "SSH-Verbindung" konnte nicht ausgeführt werden
Da fehlt doch was, der Teil des Dateinamens vor dem Leerzeichen wird akzeptiert, der Pfad ist also richtig, HTPC dahinter jedoch nicht.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

TomL

Re: Shell-Script direkt im Temrinal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von TomL » 14.02.2019 16:00:28

Richard hat geschrieben: ↑ zum Beitrag ↑
14.02.2019 11:21:55
Sorry, aber ich weiss nicht was du mir hier sagen willst.
Ich will lediglich das gleiche verhalten wie unter dolphin. Doppelklick auf das script verbindet zum Server.
Ich wollte damit ausdrucken, dass sich Dolphin meiner Meinung nach nicht Regelkonform verhält und das solche Programm-Namen fast immer und in jeder Distribution für Probleme sorgen werden. Ich glaube nicht, dass Dolphin hier der Maßstab ist, sondern das Dolphin meiner Meinung nach hierbei eher eine unrühmliche Ausnahme ist, der ein Statement falsch ausführt.

Im Regelfall und als erwartetes Verhalten wird jede Distribution den folgenden Aufruf

Code: Alles auswählen

SSH-Verbindung HTPC
wie folgt interpretieren: Starte das Programm SSH-Verbindung und übergebe als Parameter HTPC

Ganz selbstverständlich würde ich natürlich auch erwarten, wenn ich den folgenden String "SSH-Verbindung HTPC" an eine Anwendung übergebe, die möglicherweise damit Folgeprozesse auslöst, dass dieser String exakt wieder wie zuvor interpretiert wird:
Starte das Programm SSH-Verbindung und übergebe als Parameter HTPC

Wäre das anders, würde ich sofort über einen Bugreport nachdenken. Würde ich tatsächlich Dolphin nutzen und Dolphin würde den String SSH-Verbindung HTPC mit 'Starte das Programm SSH-Verbindung HTPC' interpetrieren, bewerte ich das definitiv als Programmfehler, weil es damit unmöglich wäre, das Program SSH-Verbindung mit dem Parameter HTPC zu starten, was aber tatsächlich Regelkonform wäre. Zumindest wäre das grundsätzliche Programmmverhalten damit meiner Meinung nach in einem dramatischen Umfang zufällig, weswegen es nicht mehr vorhersagbar ist und imho somit völlig unbrauchbar wird.

Ich glaube, das Verhalten, was Du als falsch beschreibst, ist in Wahrheit absolut korrektes Verhalten. Ich würde einen Programmnamen SSH-Verbindung HTPC deshalb als Design-Fehler bezeichnen.

Wobei ich natürlich jetzt nicht ausschließe, dass ich mit meiner Meinung trotzdem komplett falsch liegen kann und das in Wahrheit alles ganz anders ist. :wink:

Benutzeravatar
detix
Beiträge: 1702
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: Shell-Script direkt im Temrinal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von detix » 14.02.2019 17:05:36

Sehr schöne Ausführung @TomL, und ein exemplarisches Beispiel von @Richard warum man Leerzeichen in Dateinamen vermeiden sollte/muss.
Und „Temrinal” im Titel könnte der liebe Richard auch gleich mal mitändern...
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

gugus
Beiträge: 376
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: Shell-Script direkt im Temrinal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von gugus » 14.02.2019 17:17:25

Also, ich habe noch etwas rumgeschmökert :google: bin aber auch nicht schlauer als vorher.
Ja, das mit dem Entwerten eines Leerzeichens sowie in Anführungszeichen setzen etc funktioniert theoretisch alles.

Jedoch wird fast überall empfohlen diese zu ersetzten da es scheinbar unterschiedliche Verhaltensweisen gibt, was anscheinend auch bei Dir so ist.

Ich würde mich eher TomL anschliessen und dies als Designfehler nehmen und die Dateien umbenennen.
So viele können es nicht sein (oder doch?) , und wenn, gibt es genügend Scripte um dies zu erledigen.

Von daher spare Deine Zeit, passe die Dateien an und nimm die Zeit für etwas "vernünftiges" :mrgreen:

gruss
gugus :THX:

Benutzeravatar
detix
Beiträge: 1702
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: Shell-Script direkt im Temrinal ausführen: Ausführen Kindprozess fehlgeschlagen

Beitrag von detix » 14.02.2019 17:56:14

Ein Start in dieser Art funktioniert aber schon mit:

Code: Alles auswählen

sh -c '"SSH-Verbindung HTPC"'
falls er soetwas thunar beibringen kann, oder auch so wenn nur der ssh Befehl in der Datei steht:

Code: Alles auswählen

xterm -e sh -c '"SSH-Verbindung HTPC"'
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Antworten