Дескриптор файлу перенаправлення з віддаленої машини на локальну машину


1

Припустимо, у мене на віддаленому хості працює такий сценарій:

$ 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обома кінцями для створення названої труби чи чогось іншого ... або замість того, щоб використовувати нумерований дескриптор файлу, робіть все, що ви робите, використовуючи порт в першу чергу .
dirkt

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.