Я использую 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.