Condivisione della tecnologia

Shell Expect interazione automatizzata (esempio)

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Shell Si aspetta un'interazione automatizzata

Durante il funzionamento e la manutenzione quotidiana di Linux, è spesso necessario accedere al server in remoto. Durante il processo di accesso, è richiesto un processo interattivo e potrebbe essere necessario inserire informazioni come sì/no, quindi aspetta viene utilizzato per ottenere l'interazione. .

Sintassi chiave

❶[#!/usr/bin/aspettativa]

Questa riga indica al sistema operativo quale shell utilizzare per eseguire il codice nello script. Aspettatevi che qui sia in realtà la stessa cosa di bash sotto Linux e cmd sotto Windows. NOTA: questa riga deve essere la prima riga nello script.

❷impostato

Il timeout predefinito di wait è 10 secondi. Il timeout della sessione può essere impostato tramite il comando set. Se il timeout non è limitato, dovrebbe essere impostato su -1.

Ad esempio: set timeout 300 //Indica che il timeout della sessione è 300 s

Ad esempio: imposta timeout -1/impostazione/mai timeout, impostazioni comuni

Nota: perché è necessario impostare un timeout? Poiché il tempo predefinito è 10 secondi, è probabile che venga disconnesso durante l'esecuzione interattiva, causando l'interruzione dell'esecuzione dell'attività prima del completamento. Un'attività pianificata della nostra azienda che sincronizzava i file da un ftp remoto veniva sempre interrotta. Successivamente, ho impostato il timeout su -1 e tutto è andato bene.

❸generare

spawn è solitamente seguito da un comando di esecuzione Linux, che significa aprire una sessione, avviare il processo e tenere traccia delle informazioni sulle interazioni successive.

❹aspettarsi

Solo i risultati dell'esecuzione dei comandi eseguiti da spawn vengono catturati da wait, che includono principalmente informazioni sul prompt di input standard, eof e timeout. Attendi la visualizzazione del prompt dei comandi, ovvero la richiesta di acquisire l'input dell'utente:

➎invia

L'invio di valori che richiedono interazione sostituisce l'input manuale dell'utente; questo comando non può essere inserito automaticamente o avanzare di riga e generalmente richiede l'aggiunta di r (ritorno a capo) o n

wait "password"{ send "abc123r"} //La parte di invio della stessa riga deve avere {}

❻Terminator si aspetta eof/interact

aspettarsi eof

Questo deve essere aggiunto. Corrispondente a spawn, significa che le informazioni di output del terminale di acquisizione sono terminate, in modo simile a if....endif

interagire

Una volta completata l'esecuzione, mantenere lo stato interattivo e trasferire il controllo alla console. A questo punto è possibile eseguire l'operazione manuale. Se non è presente alcuna frase del genere, uscirà una volta completato il login, invece di rimanere sul terminale remoto.

PS: lo script di attesa deve terminare con interagire o aspettarsi eof è solitamente sufficiente per eseguire attività automatizzate.

Esempio

Inserisci il comando wait nello script di shell, il formato è il seguente

Esempio 1: 22.sh crea script di cartella

#!/bin/sh

aspettarsi

generare ssh 10.1.1.196

aspetta password {invia xxxn}

invia cd /home/cg/hmf_app/testr

invia mkdir newworkr

invia exitr

aspettarsi eof

Fine del periodo

Esempio 2: creare uno script di shell della cartella

aspettarsi

generare ssh 10.1.1.196

aspetta password {invia xxxn}

invia cd /home/cg/hmf_app/testr

invia mkdir newworkr

invia exitr

aspettarsi eof

Fine del periodo

Esempio 3: copiare i file

aspettarsi

imposta timeout -1

genera scp [email protected]:/dati/pacchetto/casb/$casbzip ./

aspetta password {invia xxxn}

aspettarsi eof

Fine del periodo

Nota:

Fine del periodo

...

Fine del periodo

Rappresenta uno script di shell

fare riferimento a:Shell Aspettatevi l'interazione automatizzata_shell script interattivo contenuto di input automatico-CSDN Blog