로깅 옵션 프롬프트 없이 원하는 파일에 여러 페이지의 출력을 출력하는 방법

로깅 옵션 프롬프트 없이 원하는 파일에 여러 페이지의 출력을 출력하는 방법

SSH를 통해 컴퓨터에서 일부 명령을 실행하기 위해 Expect를 사용하는 스크립트가 있습니다. 스크립트의 일부는 파일에 저장하려는 여러 페이지의 출력을 생성하는 명령을 실행합니다.

키 프롬프트도 기록하지 않고 예상 스크립트의 일부만 파일로 출력하려면 어떻게 해야 합니까?

내가 가진 것은 다음과 같습니다

expect "something"
send "command that causes multi-page output with --More-- or (q)uit options\r"

#looping through output so that all pages are shown

log_file -noappend file.log #logging should start now

expect {
    -ex "--More--" {
        send "\r";
        exp_continue;
    }
} #I want to have output of only this part of expect script
# everything since last command before loop is issued to end of loop

log_file #Logging should stop here

send "other commands"

로그 파일에 "--More-- 또는 (q)uit"를 추가하지 않고 루프 출력만 파일에 추가하려면 어떻게 해야 합니까?

또한 로그에는 log_file을 설정하기 전의 루프 전 마지막 전송과 log_file을 삭제한 후 루프 후의 첫 번째 프롬프트도 포함되어 있습니다. 이는 쉽게 삭제할 수 있으므로 큰 문제는 아닙니다.

--More-- or (q)uit^M ^M내 주요 문제는 여기에 포함된 로그 파일입니다.

따라서 로그는 다음과 같습니다.

actual command output lines I want
...
--More-- or (q)uit^M                  ^M"actual command output line I want"
--More-- or (q)uit^M                  ^M"actual command output line I want"

로그에 "more" 및 "exit" 옵션을 추가하지 않고 루프 출력을 파일에 기록하려면 어떻게 해야 합니까?

답변1

네트워크 장치 출력의 일시 중지는 운영자가 사용하기 위한 것입니다.

자동화된 도구를 사용할 때 가장 좋은 방법은 장치가 해당 페이지를 비활성화하도록 지시하는 데 사용하는 기본 메커니즘/언어를 사용하는 것입니다.

Cisco에 관해 이야기하는 경우 이러한 설정은 시스템 전체가 아닌 세션별로 설정되므로 이 설정이 필요한 모든 스크립트의 시작 부분에 표시되어야 합니다.

Cisco 라우터/스위치를 다룰 때 나는 일반적으로 다음 명령을 보냅니다.

terminal length 0

아니면 기대치를 사용하려면

send "terminal lenght 0\r"

추신. 실제 터미널 길이 구문은 Cisco 운영 체제에 따라 다를 수 있습니다. 예를 들어 Cisco Firewall Manager 카드의 구문은 약간 다릅니다. 그러나 이 질문의 각도는 여기서 주제가 아닙니다.

관련 정보