Shell-script voor telnet- en run-opdrachten
Kwestie
Ik heb een shellscript gemaakt dat automatisch kan telnetten en opdrachten kan uitvoeren op de andere machine en de telnet-sessie kan beëindigen zonder enige interactie van de gebruiker; de gebruiker voert alleen het script uit of roept het vanuit een ander script.
Maar u moet EXPECT- en TCL-pakketten op uw Unix-systeem installeren.
Het script bevat de volgende instructies:
#! / usr / local / bin / expect -f #### / usr / local / bin / expect is de directory waar verwacht werd geïnstalleerd
log_user 0 #### deze opdracht wordt gebruikt om de conversatie tussen het script en de andere machine te verbergen
adres instellen [lindex $ argv 0] ### wijs de eerst doorgegeven parameter toe terwijl het script naar $ address wordt aangeroepen
gebruikersnaam instellen [lindex $ argv 1] ### wijs de parameter 2nd passed toe terwijl het script wordt gebeld naar $ gebruikersnaam
set password [lindex $ argv 2] ### wijs de parameter 3rd passed toe terwijl het script naar $ password wordt gebeld
spawn telnet $ {address} ### start de telnet-sessie naar computer met IP = $ adres
### start gesprek met de machine:
verwacht "login:"
verzenden - "$ {gebruikersnaam} \ r"
verwacht "Wachtwoord:"
verzend - "$ {wachtwoord} \ r"
verwacht "$"
send - "#! / bin / ksh \ r" ### declare the shell to use (optioneel)
verwacht "$"
verzend - "### typ haar elke opdracht die u wilt uitvoeren"
verwacht "$"
verzend - "exit \ r" ### beëindig de telnet-sessie en verlaat het script
Om dit script uit te voeren, typte ik:
$ expect_script "adres" "gebruikersnaam" "wachtwoord" ### de scriptnaam is "expect_script"
Maar voordat u het expect-script belt, moet u het verwachte script uitvoerbaar maken, en dit kan gedaan worden door te typen:
$ chmod + x expect_script
Oplossing
Probeer dit:
#! / usr / local / bin / verwachten dat spawn telnet verwacht "login:" send "\ n" verwacht "Password:" send "\ n" send "bash \ n" send "cd / opt \ n" send "ls - ltr \ n "? (als u niet geeft \ n dan zal het wachten op uw reactie of u moet handmatig typen). op elkaar inwerken
Hoe het "verwacht" commando uit te voeren -f
Ex: verwacht -f. Verwacht
Notitie
Bedankt aan ZooZoo voor deze tip op het forum.