Script di shell per telnet ed eseguire comandi
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.