Строка псевдо TTY ограничена 256 символами? - PullRequest
2 голосов
/ 31 марта 2011

SSH-соединение открывается с помощью Plink (PuTTY) с Windows-машины на сервер Solaris через:

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

Затем командная строка bash записывается в stdin Plink.exe, анализируется и выполняетсяудаленным /bin/bash процессом.

Он работает до тех пор, пока длина командной строки bash не превышает 256 символов.После того, как было написано 256 символов, больше символов не выводится обратно, и вместо этого для каждого дополнительного символа возвращается BEEP (код ASCII 7).

(может показаться странным использовать /bin/bash вместо вызова скриптанапрямую, но это упрощенный пример более сложного сценария)

Ограничение в 256 символов, по-видимому, возникает только при использовании флага -t, но команды, которые выполняются на сервере Solaris, требуют TTY.

Процесс Plink.exe запускается из JVM на компьютере с Windows.

Я попытался загрузить Plink.exe с конфигурацией сеанса PuTTY с "Редактированием локальной линии" и "Локальным эхом"оба выключены, но поведение было одинаковым.

Есть ли ограничение в 256 символов в клиенте SSH (Plink.exe) или на стороне сервера (Solaris, OpenSSH, Bash)?

Как можно избежать ограничения в 256 символов?

1 Ответ

0 голосов
/ 31 марта 2011

Вход в TTY в каноническом режиме читается построчно, и очень большая строка может не помещаться во входную очередь. При установке TTY в необработанном режиме каждый символ может быть прочитан напрямую, а строки могут быть больше входной очереди.

Проблема была решена путем вызова: "stty raw".

...