Я использую функцию автоматического входа в систему по SSH из средства запуска Unity, команда выглядит примерно так:
gnome-terminal -t SSH1 -e "expect -c 'spawn ssh root@111.222.333.255 ; expect assword ; send \\"password123\\n\\" ; interact'"
Это прекрасно работает для автоматического входа, но если я разверну окно gnome-терминала содержимое оболочки ssh остается меньшим, как если бы окно имело размер по умолчанию, например:
Сначала я подумал, что это потому, что gnome-терминал запускался с размером по умолчанию, и когда по какой-то причине его размер по какой-либо причине был увеличен, размер ssh не изменился, но затем я добавил gnome-terminal --window --maximize
в команду, и та же проблема осталась, окно запускается развернутым, но оболочка ssh текст по-прежнему является размером терминала по умолчанию.
Также, если я просто открою терминал и наберу эту команду сверху, у меня возникнет та же проблема, что и при запуске из панели запуска Unity.
Любые идеи, что может вызвать это и как это исправить?
Используйте следующее в верхней части ожидаемого сценария:
#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
Это связано с переменной окружения, которую Expect использует для настройки вашего терминала.
Это можно легко исправить, добавив следующую строку в начало вашего сценария Expect:
set ::env(TERM) vt100
Я обнаружил, что если у вас есть какие-либо цветные символы. Если вы хотите увидеть раскрашенные символы, вы также можете попробовать:
set ::env(TERM) xterm
Добавьте это к своему коду:
trap {
set XZ [stty rows ]
set YZ [stty columns]
stty rows $XZ columns $YZ < $spawn_out(slave,name)
} WINCH
Похоже, это работает для меня в Ubuntu 17.10
Лучший способ получить желаемый эффект - использовать ssh-ключи, например, enzotib .
Сначала
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ ssh-keygen -t rsa
нажмите ввод в каждом приглашении, оставив поля пустыми, создаст ключ по умолчанию без пароля. Это то, что вы хотите.
Затем нажмите открытый ключ на сервере.
$ ssh-copy-id root@111.222.333.255
Наконец, создайте панель запуска с помощью команды:
gnome-terminal -t SSH1 -x ssh root@111.222.333.255