Я попробовал это с ожидаемым, но это не сработало: оно закрыло соединение в конце.
Можем ли мы запустить скрипт через ssh, который будет входить на удаленные машины, запускать команды и не отключаться?
Таким образом, ssh на машине, перейдите в такой-то каталог, а затем выполните команду и оставайтесь в системе.
-Джонатан
(ожидаю, что я использовал)
#!/usr/bin/expect -f
set password [lrange $argv 0 0]
spawn ssh root@marlboro "cd /tmp; ls -altr | tail"
expect "?assword:*"
send -- "$password\r"
send -- "\r"
interact
linux
ssh
command-line-interface
automation
Джонатан
источник
источник
Ответы:
Добавить
; /bin/bash
в конец командной строки на удаленной стороне? То есть:Более того, измените .bashrc root на что-то вроде этого:
:)
источник
-i
к этому bash.ssh -t
выделить pty.Если вы в порядке с этим в Python, у pexpect есть пример, который делает почти то, что вы просите:
Чтобы сделать это с помощью ssh вместо ftp, вам понадобится код, подобный следующему (файлы примеров в pexpect содержат гораздо больше деталей и информации, но вот основы):
Не поймите меня неправильно, я ЛЮБЛЮ ожидаю (особенно автоэкспертиза), но python просто так намного проще для меня.
источник
Вероятно, самый простой и чистый способ подключиться по ssh к серверу, создать интерактивную оболочку и выполнить команды внутри этой оболочки - создать собственный rc-файл для bash.
В своем пользовательском файле bashrc на сервере сначала укажите файл по умолчанию, а затем добавьте свои пользовательские команды, например
~ / .Bashrc_custom:
Затем вы можете начать сеанс SSH следующим образом:
В
-t
опции силы на выделение псевдо-терминал, так что такие вещи , как закладка заканчивания работы.В
--rcfile
опции определяет , какой файл конфигурации для загрузки вместо заданного по умолчанию. Важно: вы должны поместить «аргументы с двойной чертой» в командную строку перед односимвольными параметрами, чтобы их можно было распознать.-i
Аргумент / бен / Баш есть для вызова интерактивной оболочки.источник
Если кому-то нужна информация о том, что происходит в фоновом режиме, вы должны взглянуть на руководство по sshd:
https://www.freebsd.org/cgi/man.cgi?sshd(8)#LOGIN_PROCESS
источник
Как правило, вы должны избегать использования ssh таким способом, поскольку он побеждает его цель.
Сделать
чтобы увидеть, указан ли ваш ключ в пуле активных сессий ssh, или добавить его самостоятельно (с помощью ssh-add).
источник