안녕하세요. Expect를 사용하여 두 장치 간의 네트워크 문제를 해결하려고 합니다. 어쨌든, 내가 달성하고 싶은 것은 Expect를 사용하여 2개의 장치를 가져와서 명령을 적용하는 스크립트를 실행하는 것입니다.
- 스크립트에서는 사용자가 2개의 호스트 이름을 입력해야 합니다.
- 변수 사용자, 비밀번호 및 프롬프트 설정
- 첫 번째 장치에 대한 생성 프로세스 SSH
- 문제 해결을 위한 명령 표시
위의 모든 것이 잘 작동합니다....다른 호스트 이름으로 ssh를 시도할 때 문제가 발생합니다. 기본적으로 내 스크립트는 10초 후에 시간 초과되고 다른 장치로 ssh를 하지 않습니다.
훌륭한 작업과 도움을 주신 이 커뮤니티에 미리 감사드립니다.
이것은 코드입니다
#!/usr/local/bin/expect -f
exec tput clear >@ stdout
set timeout 10
puts "Enter hostname to connect"
set c [gets stdin]
puts "which is the destination hostname?"
set dhostname [gets stdin]
#setting password variable, reading it from file
set pa [open "pass.txt" r]
set pass [read $pa]
close $pa
#setting user variable
set user xxxx
#setting prompt variable
set prompt "(%|#|\\$|>|~|:) $"
spawn -noecho ssh $user@$c;
expect {
"Are you sure you want to continue connecting (yes/no)" {send {yes};
send "\r"
exp_continue}
"assword:" {
send "$pass\r"
expect -re $prompt
}
}
##commands to execute on the device
send "show system uptime\r";
expect "$prompt"
send "exit\r";
expect -re $prompt
send "ssh $user@$dhostname";