I would like make a remote machine connect to my local machine, where I would have an interactive console
Cree una escucha en su máquina local:
socat file:`tty`,raw,echo=0 tcp-listen:PORT
Escriba el siguiente comando en la máquina remota:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:YOUR_IP_ADDRESSE:PORT
Да, приложение foo
, скорее всего, пишет напрямую в TTY.
Вот скрипт, который делает то же самое:
#!/bin/sh
echo 'bar' >$(tty)
Поскольку вашу script
утилиту нельзя использовать для выполнения foo
напрямую (только через интерактивную оболочку, которую запускает утилита ), вам придется найти другой способ выделения нового TTY для выполнение команды.
Одним из таких способов является использованиеssh
:
ssh -t localhost "$PWD/foo" >output.log
Это (ab )будет использовать ssh
для подключения к localhost
, принудительно выделяя TTY с -t
и запуская приложение foo
, расположенное в текущем каталоге. Вывод foo
, включая все, что было записано в TTY, в стандартный вывод и в стандартную ошибку, вернется к вам из стандартного вывода ssh
, и вы сможете перенаправить его куда угодно.
OK Я использую сценарий(на BSD-системе )для захвата вывода длинных запусков заданий или построения вывода. Это то, на что вы, по-моему, наткнулись. Например, со страницы руководства:
-a Append the output to file or typescript, retaining the prior contents.
выглядит знакомым?:)
Опция -F pipe
может предоставить вам возможное решение. Но, в конце концов, я не совсем уверен, судя по вашему вопросу, что скрипт на самом деле то, что вы искали.
Взгляните на справочную страницу, на которую я ссылаюсь.
ХТХ
Если ваша программа игнорирует опцию -i
, вы можете запустить ее напрямую с помощью
SHELL=/path/to/your/program script /dev/null > output
Если он задыхается от опции -i
, вы можете создать для него оболочку.
$ cat wrapper
#! /bin/sh
exec /path/to/your/program
$ chmod 755 wrapper
$ SHELL=./wrapper script /dev/null > output