Я попытался установить R через кластер компьютеров, и кто-то сказал мне проверить Expect.Linux Expect SSH зависает
Я следовал учебному курсу Linux Expect Command для автоматизации процесса ssh в узел и автоматической установки открытого источника R.
Я вроде застрял на SSH части: (Tutorial goes here)
#!/usr/bin/expect -f
if {[llength $argv] != 3} {
puts "usage: ssh.exp username server password"
exit 1
}
set username [lrange $argv 0 0]
set server [lrange $argv 1 1]
set password [lrange $argv 2 2]
set timeout 60
spawn ssh [email protected]$server.mycompany.com
match_max 100000
expect "*?assword:*"
send -- "$password\r"
send -- "\r"
expect eof
я могу запустить код и войти в удаленный сервер, однако, я набираю в латах, и он просто висит на пульте дистанционного управления сервер. И я ctrl + c, и он выходит из системы и возвращается на мой хост-сервер.
Может ли один скажите мне, как продолжить процесс в Ожидать после войти
Update:. Благодаря ответ Ireeder в.
Вам просто нужно заменить expect eof на взаимодействие, и он передаст управление пользователю.
Большое спасибо, что работает для меня. Можете ли вы объяснить, что делает «ожидание эф» в этом случае? –
Вам нужно только «ожидать eof», если вы хотите выполнить какое-либо последующее действие, когда процесс будет закрыт. 'ожидать, что eof' не работает так хорошо, когда вы вручную выходите из порожденной интерактивной сессии ssh. Я не совсем уверен, почему, но я предполагаю, что есть условие гонки, когда, когда вы выходите из порожденного процесса ssh, порожденный процесс недоступен для «ожидаемого» к ожидаемому времени для поиска eof. – lreeder
Я столкнулся с вышеупомянутой проблемой при использовании функции «ожидать эф» в jenkins. Я не могу использовать взаимодействие, поскольку он не будет работать в jenkins. Есть ли другой подход, который я могу предпринять? –