shell - 伪TTY行限制为256个字符吗?

标签 shell ssh tty beep plink

通过Plink(PuTTY)从Windows机器通过以下方式打开SSH连接到Windows服务器:

Plink.exe -t <hostname> /bin/bash

然后,将bash命令行写入Plink.exe的stdin,并由远程/bin/bash进程进行解析和执行。

只要bash命令行的长度不超过256个字符,它就可以工作。写入256个字符后,不再回显任何字符,而是为每个其他字符返回BEEP(ASCII代码7)。

(使用/bin/bash而不是直接调用脚本似乎很奇怪,但这是更复杂场景的简化示例)

仅当使用-t标志时,才会出现256个字符的限制,但是在solaris服务器上执行的命令需要TTY。
Plink.exe进程是从Windows计算机上的JVM启动的。

我尝试使用“本地行编辑”和“本地回显”都处于关闭状态的PuTTY session 配置加载Plink.exe,但是行为是相同的。

在SSH客户端(Plink.exe)或服务器端(Solaris,OpenSSH,Bash)限制为256个字符吗?

如何避免256个字符的限制?

最佳答案

规范模式下输入到TTY的内容是逐行读取的,很大的一行可能不适合输入队列。通过将TTY设置为原始模式,可以直接读取每个字符,并且行可以大于输入队列。

通过调用“stty raw”解决了问题。

关于shell - 伪TTY行限制为256个字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5501986/

相关文章:

macos - Mac OS X 上的 scp 问题 : scp doesn't like spaces in filenames, "\"修复不起作用

bash - 假装是任何命令的 bash 中的 tty

linux - 如何替换文本文件中的特定行

linux - 为什么我的函数没有在 case 语句中完全执行?

mysql - grunt shell 创建数据库

python - 使用 Paramiko 通过 SSH 执行重启命令

regex - 在egrep中查找某组数字

ruby-on-rails - 在 rails 中存储 ssh 连接

linux - 终端仿真器和 TTY 设备之间有什么关系?

node.js - NodeJS 读取 TTY 串口