각 명령 출력을 해당 로그 파일 예상 스크립트로 리디렉션

각 명령 출력을 해당 로그 파일 예상 스크립트로 리디렉션
set commands {
   "show phone xxx 11"
   "show phone yyy 22"
   "show phone zzz 33"
}

spawn ssh -o StrictHostKeyChecking=no $UserId@$host
sleep 15
#wait for password prompt
expect "*assword:"
#send password 
send -- "$Passwd\r"
sleep 5
foreach cmd $commands {
    set logfile [join [lrange [split $cmd] 2 end] _]
    log_file -a $logfile
    send -- "$cmd\r"
    expect -re "admin:"
    exp_sleep 8
    log_file
}

명령 출력을 적절한 로그 파일로 리디렉션할 수 없습니다.

xxx_11 log file contains 'spawn ssh -o StrictHostKeyChecking=no $UserId@$host' output.
yyy_22 log file contains 'show phone xxx 11' command output.
zzz_33 log file contains 'show phone yyy 22' command output.

다음을 통해 로그 파일에 쓰는 방법:

XXX_11 log file contains 'show phone xxx 11' command output
yyy_22 log file contains 'show phone yyy 22' command output
zzz_33 log file contains 'show phone zzz 33' command output

도움을 주셔서 미리 감사드립니다.

답변1

첫 번째 프롬프트는 첫 번째 프롬프트 전에 출력을 읽습니다 expect -re "admin:". 아마도 다음과 같은 프롬프트가 표시될 것입니다.sshadmin:앞으로명령을 보내기 시작합니다.

expect전화 를 못 받았어앞으로당신의 루프소비하다명령을 보내기 전에 지금까지 모든 출력이 전송되었습니다. 무엇을 출력해야 할지 모르겠다면예상되는, 시간 초과된 항목으로 sleep 5대체 할 수 있습니다 expect.

관련 정보