LINUX.ORG.RU
решено ФорумAdmin

expect разрыв соединения после ввода пароля


0

1

Есть вопрос, в общем нужен скрипт expect, работающий с ssh, однако есть проблема.

spawn ssh root@$CLIENT_ADDR
expect "Are you sure you want to continue connecting \(yes/no\)?"
send "yes\r"
expect "*password:"
send "password\r"
expect "*#"

проблема в том, что иногда, после ввода пароля удаленный хост подумает немного и разрывает соединение (хотя пароль точно верный) как отработать эту ситуацию и заставить expect снова вызвать ssh и попробовать поднять сессию заново.

Желательно, чтобы сессия поднималась в неком цикле until (ssh root@$CLIENT_ADDR) { ; } тоесть так, чтобы цикл был, пока не поднимится сессия. как можно реализовать, подскажите пожуалуйста.

★★★

Ответ на: комментарий от invokercd

	rm /root/.ssh/known_hosts
	expect -f - <<END_EXPECT
	while {1} {
		spawn ssh root@$CLIENT_ADDR
		expect "Are you sure you want to continue connecting \(yes/no\)?"
		send "yes\r"
		expect "*password:"
		send "****\r"
		expect {
			"Connection Refused" {continue}
			"*#" {break}
		}
	}

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

IvanR ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.