Script di shell per telnet ed eseguire comandi

È stato progettato uno script di shell che ha le caratteristiche di telnet automatico ed esegue i comandi di esecuzione per altre macchine, ponendo così fine alla sessione di telnet senza alcun tipo di interazione da parte dell'utente. L'utente deve solo eseguire lo script della shell o chiamare la funzione da un altro script. Questo è ampiamente applicabile per Linux, ma per il sistema UNIX è necessaria l'installazione preventiva dei pacchetti TCL e INSTALL. Esiste una directory separata per l'installazione del comando Expect. I comandi specifici sono usati per nascondere la conversazione tra l'altra macchina e lo script della shell in Linux. Indirizzo, nome utente e password vengono assegnati durante la chiamata dello script. L' indirizzo IP è richiesto per la dichiarazione della shell, dopodiché viene inviato il comando di esecuzione da eseguire per contrassegnare la fine della sessione telnet.

Problema

Ho creato uno script di shell che può telnet automaticamente ed eseguire comandi sull'altra macchina e terminare la sessione telnet senza alcuna interazione da parte dell'utente; l'utente esegue semplicemente lo script o lo chiama da un altro script.

Ma è necessario installare i pacchetti EXPECT e TCL sul proprio sistema Unix.

Lo script contiene le seguenti istruzioni:

#! / usr / local / bin / expect -f #### / usr / local / bin / expect è la directory in cui è stata installata l'attesa

log_user 0 #### questo comando è usato per nascondere la conversazione tra lo script e l'altra macchina

imposta indirizzo [lindex $ argv 0] ### assegna il primo parametro passato mentre chiama lo script in $ indirizzo

set username [lindex $ argv 1] ### assegna il secondo parametro passato mentre chiama lo script su $ username

imposta password [lindex $ argv 2] ​​### assegna il terzo parametro passato mentre chiama lo script su $ password

spawn telnet $ {indirizzo} ### avvia la sessione telnet per lavorare con IP = $ indirizzo

### avviare la conversazione con la macchina:

aspetto "login:"

invia - "$ {nomeutente} \ r"

aspetta "Password:"

invia - "$ {password} \ r"

aspetta "$"

send - "#! / bin / ksh \ r" ### dichiarare la shell da usare (opzionale)

aspetta "$"

invia - "### digita tutti i comandi che vuoi eseguire"

aspetta "$"

send - "exit \ r" ### termina la sessione telnet ed esce dallo script

Per eseguire questo script, ho digitato:

$ expect_script "indirizzo" "username" "password" ### il nome dello script è "expect_script"

Ma prima di chiamare lo script expect, è necessario rendere prevedibile lo script, e questo può essere fatto digitando:

$ chmod + x expect_script

Soluzione

Prova questo:

 #! / usr / local / bin / expect spawn telnet expect "login:" invia "\ n" expect "Password:" invia "\ n" invia "bash \ n" invia "cd / opt \ n" invia "ls - ltr \ n "? (se non stai dando \ n allora aspetterà la tua risposta o dovrai inserire manualmente). interagire 

Come eseguire il comando "expect" expect -f

Es: expect -f .expect

Nota

Grazie a ZooZoo per questo suggerimento sul forum.

Articolo Precedente Articolo Successivo

I Migliori Consigli