Я хочу иметь возможность настроить сеанс экрана через screenrc или внутри сеанса, чтобы он вел себя так же, как терминал xterm. В настоящее время у меня есть приложение С#, которое использует библиотеки ssh.net для подключения по ssh к ящику Linux с компьютера с Windows, где я подключаюсь к сеансу экрана, отправляю команды и получаю ответы обратно. Я вижу два разных типа и ответов для одной и той же команды, если я подключен к сеансу экрана, по сравнению с тем, когда я не подключен к сеансу экрана. Чтобы продемонстрировать проблему, я продублирую проблему, используя терминал шпатлевки, и зарегистрирую данные.
- Откройте терминал шпатлевки из окон
- Измените настройку Session->Logging и выберите SSH Packets, а также укажите место для сохранения файла putty.log.
- Установите свой IP-адрес и подключитесь к машине Linux
- После входа в систему введите следующую команду printf abc\6\n, эта строка содержит символ подтверждения
- ответ напечатает abc и, конечно, не покажет \6, так как это непечатаемый символ
- Откройте файл putty.log, и вы увидите, что данные пакетов ответов содержат \6, что является правильным поведением.
- Теперь создайте сеанс, введя следующую команду: screen -dmS test
- Присоединитесь к сеансу, введя следующую команду: screen -Rr test
- введите следующую команду еще раз printf abc\6\n
- abc будет напечатан, как и ожидалось, но если вы посмотрите на данные пакетов ответов в putty.log, в нем больше не будет символа \6
- Я могу решить эту проблему, введя команду, подобную этой: printf abc\6\n | cat -v для преобразования \6 в печатную форму и отображения ^F на экране, я бы предпочел получать \6 в данных своих пакетов, и это нежелательное решение, но, по крайней мере, оно обеспечивает решение моей проблемы.
Ниже приведена более серьезная проблема, которую я не смог решить. Для демонстрации сделайте следующее:
- Откройте терминал шпатлевки из окон
- Измените настройку Session->Logging и выберите SSH Packets, а также укажите место для сохранения файла putty.log.
- Установите свой IP-адрес и подключитесь к машине Linux
- После входа в систему измените настройку stty, введя следующую команду (указывает терминалу не заменять новую строку возвратом каретки): stty -onlcr
- затем введите команду ls -al,
- Файл putty.log будет содержать правильный набор данных без лишних символов.
- Теперь создайте сеанс, введя следующую команду: screen -dmS test
- Присоединитесь к сеансу, введя следующую команду: screen -Rr test
- введите следующую команду еще раз stty -onlcr
- введите ls -al снова
- если вы посмотрите на данные пакета ответа в putty.log, вы увидите, что после определенного количества полученных пакетов ответ будет содержать дополнительные символы перед каждым ответом. дополнительные символы имеют следующий формат [13C. числа между [ и C варьируются.
Я хотел бы, чтобы мои ответы вели себя так же, как стандартный терминал xterm. В чем разница и есть ли способ настроить экран для получения ответов, соответствующих типу терминала xterm.