O script de shell permite vários descritores de arquivo (até 9 para conformidade com POSIX, mas ainda mais para bash
):
$ install -m 755 /dev/stdin /tmp/test <<\EOF
#!/bin/sh
echo hi1 >&1
echo hi2 >&2
echo hi3 >&3
echo hi4 >&4
EOF
$ /tmp/test 1> /tmp/1 2> /tmp/2 3> /tmp/3 4> /tmp/4
$ cat /tmp/1
hi1
$ cat /tmp/2
hi2
$ cat /tmp/3
hi3
$ cat /tmp/4
hi4
Eu quero alcançar o mesmo comportamento no SSH, mas o que acontece é:
$ ssh user@remote_machine /tmp/test 1> /tmp/1 2> /tmp/2 3> /tmp/3 4> /tmp/4
$ cat /tmp/1
hi1
$ cat /tmp/2
hi2
/tmp/test: 5: /tmp/test: 3: Bad file descriptor
/tmp/test: 6: /tmp/test: 4: Bad file descriptor
$ cat /tmp/3
$ cat /tmp/4
É possível ter vários tubos de saída sobre SSH além de stdout
e stderr
?
É importante observar que não estou procurando por encaminhamento de porta, pois terei problemas de rede.
Não, isso não é factível. O
ssh
cliente fecha explicitamente cada descritor de arquivo aberto maior que 2:Isso é quase a primeira coisa que acontece quando o cliente inicia (veja
main()
no código fonte do OpenSSH 8.0 disponível aqui ).