通过Plink(PuTTY)从Windows机器打开SSH连接到solaris服务器:
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会话配置加载Plink.exe,其中“Local line editing”和“Local echo”都关闭,但行为是相同的。
SSH客户端(Plink.exe
)或服务器端(Solaris,OpenSSH,Bash)是否有256个字符的限制?
如何避免256个字符的限制?
答案 0 :(得分:0)
逐行读取规范模式下的TTY输入,并且非常大的行可能不适合输入队列。通过在原始模式下设置TTY,可以直接读取每个字符,并且行可以大于输入队列。
问题解决了:“stty raw”。