Shelli skript telneti ja käskude jaoks
Probleem
Olen loonud shelliskripti, mis saab telnet automaatselt käivitada ja käske teisel masinal käivitada ning telnetiseansi lõpetada ilma kasutaja interaktsioonita; kasutaja lihtsalt käitab skripti või kutsub seda teisest skriptist.
Kuid peate oma Unixi süsteemi installima EXPECT ja TCL pakette.
Skript sisaldab järgmisi juhiseid:
#! / usr / local / bin / waiting -f #### / usr / local / bin / wait on kataloog, kuhu oodati,
log_user 0 #### seda käsku kasutatakse skripti ja teise masina vahelise vestluse peitmiseks
määratud aadress [lindex $ argv 0] ### määrab esimese läbitud parameetri skripti helistamisel $-aadressile
määrake kasutajanimi [lindex $ argv 1] ### määrake 2. läbitud parameeter, kutsudes skripti $ kasutajanimi
seadistage parool [lindex $ argv 2] ### määrake kolmas läbitud parameeter, kutsudes skripti $ paroolile
spawn telnet $ {address} ### alustage telnetiseanssi masinaga, mille IP aadress on $ =
### alustage masinaga vestlust:
oota "login"
saatke - "$ {kasutajanimi} \ t
oodata parooli:
saatke - "$ {password}
oodata "$"
saatke - "#! / bin / ksh r" ### kuulutab kasutatava kesta (valikuline)
oodata "$"
saatke - "### tippige talle käsk, mida soovite täita"
oodata "$"
send - "exit r" ### lõpetab telnetiseansi ja väljub skriptist
Selle skripti täitmiseks kirjutasin:
$ wait_script "aadress" "kasutajanimi" "parool" ### skripti nimi on "wait_script"
Aga enne, kui ootate skripti, peaksite tegema eeldatava skripti käivitatava ja seda saab teha kirjutades:
$ chmod + x wait_script
Lahendus
Proovi seda:
#! / usr / local / bin / wait spawn telnet wait "logi sisse:" saatke "n" oodake "parool:" Saada "n" Saada "bash n" Saada "cd / opt \ t ltr n "? (kui sa ei anna, siis ootab see teie vastust või peate sisestama sisestuse käsitsi). suhelda
"Ootuse" käsu täitmine ootab -f
Ex: oodata -f .expect
Märge
Täname ZooZoo selle foorumi vihje eest.