michaellukashov / Far-NetBox

SFTP/SCP/FTP/FTPS/WebDAV/S3 client for Far Manager 3 (http://farmanager.com/)
https://forum.farmanager.com/viewtopic.php?t=6317
GNU General Public License v2.0
161 stars 52 forks source link

Зависание FAR #135

Open kopavel opened 9 years ago

kopavel commented 9 years ago

Попытка использования STDIN с удаленной SSH консоли вызывает зависание. Повторяемость 100%: Подключаемся к SFTP. Вводим в консоль любую команду, ожидающую ввод. К примеру часто случайно вместо ESC идет символ ` Можно например SU или любую другую. Следует вопрос об фоновой сессии и затем всё - повисаем... Видимо ждем ввода из ниоткуда, доолго ждем...

VictorVG commented 9 years ago

Раз вы пишете SU то не удивительно - SU может до бесконечности ждать ввода рутового пароля, так что с точки зрения ОС на лицо ошибка оператора вводящего недопустимую в данной ситуации интерактивную команду. Команда ждёт ваш ввод чтобы выдать результат выполнения в хост-процесс, а он ждёт её ответ чтобы продолжить работу. Так что задачу в состояние бесконечного ожидания вводит ваша ошибка - выдача интерактивных команд переводимых в фоновый режим не допустима.

Ну а вопрос о правомерности выдачи вами SU я поднимать не стану - если вы не в группе whell сервер должен вам отказать в её выполнении сам.

kopavel commented 9 years ago

Нет, возможно я не до конца понятно выразился - FAR не имеет возможности что либо ввести с STDIN, поэтому абсолютно любое действие ожидающие ввода в консоль (в STDIN как я понимаю, это собственно предположение а не заключение) приводит к полной невозможности что либо делать: имеем полное повисание ФАР - что не жми на клавиатуре, даже закрыть ФАР нельзя. Скажем так достаточно удобно запустить sh скрипт на исполнение (просто кидаем путь до скрипта и ENTER), но если в скрипте что-то ожидает ввода - вешаем ФАР. Хорошо - с этим еще бы можно было бы жить (ибо нефиг запускать такие скрипты ;) ) но сценарий с "`" (тильда) который я привел меня часто раздражает. Когда в консоли что-то набрано - быстрый способ всё стереть - нажать ESC. случайно немного промахнувшысь - попадаю на тильду, нажимаем ENTER чтоб перейти в другую директорию - в итоге вешаем ФАР наглухо.

VictorVG commented 9 years ago

Ну, надо поглядеть, хотя перехватить что-то со stdin и возможно через модификатор перенаправления "<" к примеру в редактор. Но в данном случае наверное по иному придётся поступить. Надо подумать над алгоритмом. Я вижу возможный вариант решения задачи но пока не готов его высказать - сыроват по моему.

kopavel commented 9 years ago

Хоть это уже больше из хотелок - а нельзя вообще завести STDIN? за-bind-ить ввод с клавиатуры на stdin фонового putty-процесса на время выполнения команды? в итоге и проблема решится и получим практически полноценную SSH/Putty сессию прямо в ФАР консоли? Сейчас она работает по сути только на вывод. Пример еще одного случая повисания - моя попытка выполнить "yum install ..." с получением в консоль "continue Y/n" и конечно - повисание...

VictorVG commented 9 years ago

Да и я думаю в том же направлении, но тут вероятно потребуется и поддержку в ядро Far просить добавить.