Socat та багаті термінали (з поширенням Ctrl + C / Ctrl + Z / Ctrl + D)


6

socat - exec:'bash -li',pty,stderr,ctty - & gt; bash: no job control in this shell

Які варіанти слід використовувати, щоб отримати повноцінну оболонку, як я отримую з ssh / sshd?

Я хочу мати можливість підключити оболонку до всього, що може обробляти socat ( SOCKS 5 , UDP, OpenSSL), але і мати гарну оболонку, яка правильно інтерпретує всі ключі, різні Ctrl + C / Ctrl + Z , завершення вкладки, клавіші вгору / вниз (з віддаленою історією).

  • Оновлення 1: Знайдено опцію "setsid" socat. Вона фіксує "без контролю роботи". Тепер намагаюся виправити Ctrl + D .

  • Оновлення 2:

    socat file:`tty`,raw,echo=0 exec:'bash -li',pty,stderr,setsid,sigint,sane
    . Не він обробляє Ctrl + D / Ctrl + Z / Ctrl + C ну, я можу почати Vim всередині нього, віддалена історія в порядку.

Схоже, що всі вимоги виконуються зараз. Тепер, щоб позначити питання як закрите?
Vi.

Відповіді:


4

Проблеми були:

  1. Відсутня опція "setsid" у правій частині socat. Це призведе до того, що bash не буде контролером сеансу.
  2. Використання "-" у лівій частині соката. Правильна річ `tty`, raw, echo = 0.

Тепер я можу мати оболонку над усіма речами socat може підтримувати і може запускати vim / screen / ssh, переривати ping з ^ C, кінець cat з ^ D і робити все інше в цій оболонці.

Якщо bash порушує рядки неправильно та / або vim занадто малий або занадто великий, можна використовувати termize легко виправити.


Використання STDIN:raw,echo=0 замість file:`tty`,raw,echo=0 працював краще для мене. Я зміг використати це (використовуючи два socats з сокетом unix домену в середині), щоб отримати доступ до оболонки в іншому просторі імен мережі.
Seth Robertson

@SethRobertson Щоб грати з просторами імен Linux, перегляньте також мій інший проект: github.com/vi/dive
Vi.

@SethRobertson, я використовую цей спосіб запуску чогось в інших існуючих просторах імен мережі: dived -J -S -T --setns /proc/12345/ns/net -- /bin/bash. Таким чином, встановлюється тільки мережевий простір імен, зберігається все інше (інші простори імен, керуючий термінал, батьківський процес).
Vi.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.