SSH-оболочка, запущенная с помощью "expect", не имеет полной ширины. Как это исправить?

SSH-оболочка, запущенная с помощью "expect", не имеет полной ширины. Как это исправить?

Я использую expect для автоматического входа по SSH из лаунчера Unity, команда выглядит примерно так:

gnome-terminal -t SSH1 -e "expect -c 'spawn ssh [email protected] ; expect assword ; send \\"password123\\n\\" ; interact'"

Это отлично работает для автоматического входа в систему, но если я разверну окно gnome-terminal на весь экран, содержимое оболочки ssh останется меньше, как если бы окно имело размер по умолчанию, например:

Скриншот

Сначала я думал, что это из-за того, что gnome-terminal запускается с размером по умолчанию, а при разворачивании по какой-то причине размер ssh-содержимого не меняется, но потом я добавил gnome-terminal --window --maximizeкоманду, и та же проблема осталась: окно запускается развёрнутым, но текст оболочки ssh по-прежнему имеет размер терминала по умолчанию.

Кроме того, если я просто открою терминал и введу эту команду сверху, у меня возникнет та же проблема, что и при запуске из лаунчера Unity.

Есть идеи, что может быть причиной этого и как это исправить?

решение1

Используйте следующее в верхней части вашего ожидаемого скрипта:

#trap sigwinch and pass it to the child we spawned
trap {
 set rows [stty rows]
 set cols [stty columns]
 stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH

решение2

Лучший способ получить желаемый эффект — использовать ключи SSH, напримерэнзотибпредложенный.

Первый

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ ssh-keygen -t rsa

нажимайте Enter в каждом запросе, оставляя поля пустыми, вы создадите ключ по умолчанию без пароля. Это то, что вам нужно.

Затем отправьте открытый ключ на сервер.

$ ssh-copy-id [email protected]

Наконец, создайте лаунчер с помощью команды:

gnome-terminal -t SSH1 -x ssh [email protected]

решение3

Это связано с переменной среды, которую Expect использует для настройки вашего терминала.

Это можно легко исправить, добавив следующую строку в начало скрипта Expect:

set ::env(TERM) vt100

Я обнаружил, что если у вас есть какие-либо раскрашенные персонажи. Если вы хотите увидеть раскрашенных персонажей, вы также можете попробовать:

set ::env(TERM) xterm

решение4

Добавьте это в свой код:

trap {
    set XZ [stty rows   ]
    set YZ [stty columns]
    stty rows $XZ columns $YZ < $spawn_out(slave,name)
} WINCH

Похоже, это работает у меня на Ubuntu 17.10.

Связанный контент