SSH 1 호스트를 사용하여 일부 명령을 적용하고 장치를 종료한 다음 다른 장치를 SSH하여 다른 명령을 적용합니다.

SSH 1 호스트를 사용하여 일부 명령을 적용하고 장치를 종료한 다음 다른 장치를 SSH하여 다른 명령을 적용합니다.

안녕하세요. 두 장치 간의 네트워크 문제 해결을 위해 Expect를 사용하려고 합니다. 요약하자면, 제가 달성하려는 것은 2개의 장치를 입력하고 명령을 적용하는 Expect를 사용하여 스크립트를 실행하는 것입니다.

  1. 스크립트는 사용자에게 2개의 호스트 이름을 입력하도록 요청합니다.
  2. 변수 user,password 및 프롬프트가 설정되었습니다.
  3. 첫 번째 장치에 SSH를 연결하는 프로세스 생성
  4. 문제 해결 목적으로 명령 표시

위의 모든 것은 잘 작동합니다....다른 호스트 이름을 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";

관련 정보