![Socat 和丰富的终端(使用 Ctrl+C/Ctrl+Z/Ctrl+D 传播)](https://linux22.com/image/1234586/Socat%20%E5%92%8C%E4%B8%B0%E5%AF%8C%E7%9A%84%E7%BB%88%E7%AB%AF%EF%BC%88%E4%BD%BF%E7%94%A8%20Ctrl%2BC%2FCtrl%2BZ%2FCtrl%2BD%20%E4%BC%A0%E6%92%AD%EF%BC%89.png)
socat - exec:'bash -li',pty,stderr,ctty
->bash: no job control in this shell
我应该使用什么选项来获得像使用 ssh/sshd 那样成熟的 shell?
我希望能够将 shell 连接到 socat 可以处理的所有内容(袜子 5、UDP、OpenSSL),而且还需要一个好的 shell,可以正确解释所有的键、各种Ctrl+ C/ Ctrl+ Z、制表符补全、向上/向下键(带有远程历史记录)。
更新 1:找到“setsid”socat 选项。它修复了“无作业控制”问题。现在尝试修复Ctrl+ D。
更新 2:
socat 文件:`tty`,raw,echo=0 exec:'bash -li',pty,stderr,setsid,sigint,sane
。它不能很好地处理Ctrl+ D/ Ctrl+ Z/ Ctrl+ C,我可以在其中启动 Vim,远程历史记录也可以。
答案1
问题是:
- socat 右侧缺少“setsid”选项。这将导致 bash 无法成为会话的控制者。
- 在socat的左边使用“-”。正确的做法是`tty`,raw,echo=0。
现在我可以拥有一个 shell,可以控制 socat 支持的所有内容,并且可以启动 vim/screen/ssh,ping
以 ^C 中断,cat
以 ^D 结束,并在该 shell 中执行所有其他操作。
如果 bash 错误地断行和/或vim
太小或太大,你可以使用术语大小轻松修复它。