я неспособен выполнять команды на удаленном хосте с использованием ожидать script.It только входит в систему на удаленном хосте и exits.Here это кодне в состоянии выполнять удаленные команды SSH с ожидать сценария
#!/usr/bin/expect
set timeout 15
puts "connecting to the storage\n"
set user [lindex $argv 0]
set host [lindex $argv 1]
set pass "root123"
spawn ssh "$user\@$host"
expect {
"Password: " {
send "$pass\r"
sleep 1
expect {
"$ " {
send "isi quota quotas list|grep ramesh\r" }
"$ " {
send "exit\r" }
}
}
"(yes/no)? " {
send "yes\r"
expect {
"$ " { send "ls\r" }
"$ " { send "exit\r" }
"> " {}
}
}
default {
send_user "login failed\n"
exit 1
}
}
Это только получает в удаленный хост и выходы. [глубоко @ host1: ~] $ ./sshexpect user1 host2 подключения к хранилищу
spawn ssh [email protected]
Password:
host2$
[[email protected]:~]$
Является ли синтаксис неправильно? Я новичок в tcl-скриптах.
я понял ошибку, но я не получил то, что делает ниже линии стендов для -rE {\ $ $} А также почему мы должны put ожидать eof в конце скрипта – anudeep
Параметр '-re' использует шаблон регулярного выражения вместо шаблонов шаблонов по умолчанию. Я указываю, что приглашение представляет собой знак доллара и пробел * в конце строки *. Если ожидается, увидит знак доллара и пробел, а затем другой текст, который не будет соответствовать подсказке. 'ожидать, что eof' в основном означает« подождать, пока порочный процесс не будет закрыт »- здесь не обязательно, но в целом хорошая практика. –
Я пробовал, что все еще не работает для меня. Он показывает, что «login failed» и завершает работу. Он просто регистрируется в удаленном поле, а затем пуст и после некоторого выхода с «login failed» – anudeep