안녕하세요. 두 장치 간의 네트워크 문제 해결을 위해 Expect를 사용하려고 합니다. 요약하자면, 제가 달성하려는 것은 2개의 장치를 입력하고 명령을 적용하는 Expect를 사용하여 스크립트를 실행하는 것입니다.
- 스크립트는 사용자에게 2개의 호스트 이름을 입력하도록 요청합니다.
- 변수 user,password 및 프롬프트가 설정되었습니다.
- 첫 번째 장치에 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";