minhas informações de contato
Correspondência[email protected]
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Shell espera interação automatizada
Durante a operação e manutenção diária do Linux, muitas vezes é necessário fazer login remotamente no servidor. Durante o processo de login, é necessário um processo interativo e pode ser necessário inserir sim/não e outras informações, portanto, expect é usado para obter interação. .
Sintaxe chave
❶[#!/usr/bin/esperar]
Esta linha informa ao sistema operacional qual shell usar para executar o código no script. Expect aqui é na verdade a mesma coisa que bash no Linux e cmd no Windows. NOTA: Esta linha precisa ser a primeira linha do script.
❷conjunto
O tempo limite padrão de expect é de 10 segundos. O tempo limite da sessão pode ser definido por meio do comando set. Se o tempo limite não for limitado, ele deverá ser definido como -1.
Por exemplo: set timeout 300 //Indica que o tempo limite da sessão é 300s
Por exemplo: definir tempo limite -1/configuração/nunca tempo limite, configurações comuns
Nota: Por que você precisa definir um tempo limite? Como o tempo padrão é 10s, é provável que ele seja desconectado durante a execução interativa, fazendo com que a execução da tarefa seja encerrada antes da conclusão. Uma tarefa agendada da nossa empresa que sincronizava arquivos de um FTP remoto sempre terminava. Mais tarde, configurei o tempo limite para -1 e estava tudo bem.
❸gerar
spawn geralmente é seguido por um comando de execução do Linux, o que significa abrir uma sessão, iniciar o processo e rastrear informações de interação subsequentes.
❹esperar
Apenas os resultados de execução dos comandos executados pelo spawn são capturados pelo expect, que inclui principalmente informações de prompt de entrada padrão, eof e timeout. Aguarde até que o prompt de comando apareça, que é o prompt para capturar a entrada do usuário:
➎enviar
O envio de valores que requerem interação substitui a entrada manual do usuário; este comando não pode inserir ou alimentar automaticamente e geralmente requer a adição de r (retorno de carro) ou n;
expect "password"{ send "abc123r"} //A parte de envio da mesma linha deve ter {}
❻Terminator espera eof/interagir
espere eof
Isso deve ser adicionado. Correspondente ao spawn, significa que as informações de saída do terminal de captura foram encerradas, semelhante a if....endif.
interagir
Após a conclusão da execução, mantenha o estado interativo e transfira o controle para o console. Neste momento, a operação manual pode ser executada. Se não houver tal frase, ele sairá após a conclusão do login, em vez de permanecer no terminal remoto.
PS: O script expect deve terminar com interact ou expect eof. Geralmente, expect eof é suficiente para executar tarefas automatizadas.
Exemplo
Insira o comando expect no shell script, o formato é o seguinte
Exemplo 1: script de criação de pasta 22.sh
#!/bin/sh esperar gerar ssh 10.1.1.196 esperar senha {enviar xxxn} enviar cd /home/cg/hmf_app/testr enviar mkdir newworkr enviar exitr espere eof Fim do prazo de validade |
Exemplo 2: Criar script de shell de pasta
esperar gerar ssh 10.1.1.196 esperar senha {enviar xxxn} enviar cd /home/cg/hmf_app/testr enviar mkdir newworkr enviar exitr espere eof Fim do prazo de validade |
Exemplo 3: Copiar arquivos
esperar definir tempo limite -1 gerar scp [email protected]:/data/pacote/casb/$casbzip ./ esperar senha {enviar xxxn} espere eof Fim do prazo de validade |
Observação:
Fim do prazo de validade
...
Fim do prazo de validade
Representa um script de shell
referir-se:Shell espera interação automatizada_shell script conteúdo de entrada automática interativo-CSDN Blog