Compartilhamento de tecnologia

Shell espera interação automatizada (exemplo)

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