Eu não sei nada sobre Java, mas posso mostrar uma prova de conceito. Digamos que temos localfile.txt :
Here is the local file.
e na máquina remota, temos remote.sh :
#!/bin/bash
cat /dev/stdin
Observe que o script na máquina remota chama um programa que lê de stdin
. Em seguida, passe o conteúdo de localfile.txt para o seu comando ssh:
user@local:~$ cat localfile.txt | ssh user@remote remote.sh
Here is the local file.
Seu programa em Java está tentando ler um arquivo que não existe na máquina remota. Eu acho que você poderia tentar imitar um arquivo local.
Mude remote.sh para:
#!/bin/bash
cat "$@"
e invoque-o com
user@local:~$ cat localfile.txt | ssh user@remote 'remote.sh <(cat /dev/stdin)'
Here is the local file.
Acho que seria mais fácil alterar essa parte do seu programa em Java para ler stdin
.
Eu acho que as coisas podem ficar confusas se localfile.txt contiver algo que possa ser interpretado pelo shell como expansível (como *
), mas isso é para você para descobrir.