Припустимо, у мене на віддаленому хості працює такий сценарій:
$ 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
ssh -L ...(див.man ssh), А потім скористайтесяsocatобома кінцями для створення названої труби чи чогось іншого ... або замість того, щоб використовувати нумерований дескриптор файлу, робіть все, що ви робите, використовуючи порт в першу чергу .