Перенаправить дескриптор файла с удаленного компьютера на локальный компьютер

413
nautical

Предположим, у меня есть следующий скрипт на удаленном хосте:

$ cat remote_script #!/bin/bash  exec 3>file.log  echo "Output to stdout" echo "Output to stderr" >&2 echo "Output to fd3 >&3 

Когда этот скрипт выполняется на удаленном компьютере, он будет перенаправлен fd3в файл на удаленном компьютере. Когда я подключаюсь sshк удаленному и запускаю скрипт

$ ssh user@remote_host "./remote_script" 

тогда я могу видеть вывод stdinи stderrна локальной машине. Вывод fd3, однако, все еще идет в файл на удаленном компьютере.

Есть ли способ перенаправить, fd3чтобы увидеть его выходные данные на локальном компьютере и все же иметь возможность отличить его от stdout?

Я уже пробовала

$ cat remote_script #!/bin/bash  exec 3>&1 ...  $ ssh user@remote_host "./remote_script" 3>local.file.log 

но это только генерирует пустой файл на локальной машине, т. е. я не могу отделить fd3отstdout

1
Не могу придумать способ сделать это напрямую. Однако вы можете выполнить переадресацию портов с помощью `ssh -L ...` (см. `Man ssh`), а затем использовать` socat` на обоих концах для создания именованного канала или чего-то еще ... или вместо использования нумерованного дескриптора файла , делайте все, что вы делаете, используя порт в первую очередь. dirkt 6 лет назад 0
[* SSH: предоставьте дополнительные «pipe» fd в дополнение к `stdin`,` stdout`, `stderr` *] (https://unix.stackexchange.com/q/226638/108618) Kamil Maciorowski 6 лет назад 0

0 ответов на вопрос

Похожие вопросы