1개의 호스트에 ssh를 사용하고 일부 명령을 적용한 다음 장치를 종료하고 다른 장치로 ssh를 사용하여 다른 명령을 적용하십시오.

1개의 호스트에 ssh를 사용하고 일부 명령을 적용한 다음 장치를 종료하고 다른 장치로 ssh를 사용하여 다른 명령을 적용하십시오.

안녕하세요. Expect를 사용하여 두 장치 간의 네트워크 문제를 해결하려고 합니다. 어쨌든, 내가 달성하고 싶은 것은 Expect를 사용하여 2개의 장치를 가져와서 명령을 적용하는 스크립트를 실행하는 것입니다.

  1. 스크립트에서는 사용자가 2개의 호스트 이름을 입력해야 합니다.
  2. 변수 사용자, 비밀번호 및 프롬프트 설정
  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";

관련 정보