Como gerar saída de várias páginas esperando arquivar sem que os prompts de opção sejam registrados

0

Eu tenho um script usando esperar para executar alguns comandos na máquina através do SSH. Há uma parte do script que emite um comando que faz com que a saída de várias páginas que eu quero salvar no arquivo.

Como posso produzir apenas essa parte do script de espera para o arquivo, e não tê-lo também colocar prompt de imprensa chave para registrar.

O que eu tenho está seguindo

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"

Como posso obter apenas a saída desse loop para o arquivo, sem "--More-- ou (q) uit" adicionado ao arquivo de log.

O log também contém o último envio antes do loop, antes do log_file ser definido, e o primeiro prompt após o loop, após o log_file ser removido, que eu posso remover facilmente depois, então não é um grande problema.

Meu problema principal é que o arquivo de log contém --More-- or (q)uit^M ^M .

Então, o log é assim:

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"

Como posso registrar a saída do loop no arquivo sem ter as opções More e quit anexadas ao log?

    
por rAlen 07.09.2018 / 11:12

1 resposta

2

As pausas na saída de dispositivos de rede são para o benefício do uso de operadores humanos.

Ao usar ferramentas de automação, a melhor abordagem é usar qualquer mecanismo / linguagem nativa que o dispositivo fale para informar a desativação dessas páginas.

Se estamos falando sobre a Cisco, essas configurações são por sessão e não em todo o sistema, portanto, elas precisam ser emitidas no início de cada script que precisa da configuração.

Ao lidar com roteadores / switches Cisco, geralmente envio o comando:

terminal length 0

Ou em esperar linguagem

send "terminal lenght 0\r"

PS. Cuidado com a sintaxe real do comprimento do terminal pode variar dependendo do sistema operacional da Cisco, por exemplo, os cartões de hipervisores de firewall da Cisco têm uma sintaxe ligeiramente diferente. No entanto, esse ângulo da questão não está no tópico aqui.

    
por 07.09.2018 / 11:37

Tags