ssh - /dev/stdin nicht Nutzbar bei direktem Kommandoaufruf

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

ssh - /dev/stdin nicht Nutzbar bei direktem Kommandoaufruf

Beitrag von peschmae » 13.09.2005 13:13:32

Mein Problem:

Code: Alles auswählen

cat hello.hex | ssh -p 22222 peschmae@sat "uisp -dprog=dasa2 -dserial=/dev/ttyS0 --erase --upload --verify if=/dev/stdin"
...
Error: No such device or address
 -> /dev/stdin
lokal geht das ganze natürlich - also ein
cat hello.hex | uisp -dprog=... if=/dev/stdin
ist kein Problem. Das heisst auch dass eine Kombination scp - ssh - rm funktioniert. Aber ich möchte eigentlich doofe Temporärdateien umgehen.

Was muss ich machen damit ich /dev/stdin nutzen kann? Es scheint als ob ich dazu eine Login-Shell benötigen würde. Aber ein Konstrukt wie:

Code: Alles auswählen

cat hello.hex | ssh -p 22222 peschmae@sat bash -c "uisp -dprog=dasa2 -dserial=/dev/ttyS0 --erase --upload --verify if=/dev/stdin"
uisp: No commands specified. Try 'uisp --help' for list of commands.
ist leider auch nicht erfolgreich...

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
Hosi
Beiträge: 226
Registriert: 17.03.2003 15:17:29

Beitrag von Hosi » 13.09.2005 22:15:38

/dev/stdin (und analog /proc/self/fd/0 und /dev/fd/0) zeigen bei einer ssh-Verbindung seltsamerweise nicht auf den ssh-Prozess (bzw. auf den socket).

Aber damit sollte es funktionieren:

Code: Alles auswählen

cat hello.hex | ssh -p 22222 peschmae@sat "cat | uisp -dprog=dasa2 -dserial=/dev/ttyS0 --erase --upload --verify if=/dev/stdin"
Dann zeigt /dev/stdin auf das STDOUT von der cat-Pipe.

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 14.09.2005 18:46:18

Vielen Dank, das läuft :D

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
Hosi
Beiträge: 226
Registriert: 17.03.2003 15:17:29

Beitrag von Hosi » 14.09.2005 20:44:41

Die Frage ist nur, warum läuft es nicht, wenn STDIN auf den SSH-Socket zeigt??

Code: Alles auswählen

hosi@hola:~$ echo "TEST" | ssh -lroot hoco "cat - | cat /dev/fd/0"
TEST

hosi@hola:~$ echo "TEST" | ssh -lroot hoco "cat /dev/fd/0"
cat:/dev/fd/0: Kein passendes Gerät bzw. keine passende Adresse gefunden

echo "TEST" | ssh -lroot hoco "ls -la /dev/fd/0"
lrwx------  1 root root 64 2005-09-14 20:40 /dev/fd/0 -> socket:[388369]

Und "-" und /dev/stdin sollten das gleiche sein??

Antworten