Несколько FIFOS по SSH

0

Сценарий оболочки допускает несколько файловых дескрипторов (до 9 для соответствия POSIX, но даже больше для 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

Я хочу добиться того же поведения по SSH, но что происходит, это:

$ 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

Возможно ли иметь несколько выходных каналов по SSH, кроме stdoutи stderr?

Важно отметить, что я не ищу переадресацию портов, так как у меня будут проблемы с сетью.

Тиаго Пимента
источник

Ответы:

0

Нет, это не выполнимо. sshКлиент явно закрывает каждый дескриптор открытого файла больше , чем 2:

/*
 * Discard other fds that are hanging around. These can cause problem
 * with backgrounded ssh processes started by ControlPersist.
 */
closefrom(STDERR_FILENO + 1);

Это почти первое, что происходит при запуске клиента (см. main()Исходный код OpenSSH 8.0, доступный здесь ).

Кусалананда
источник