Shell скрипт за командите telnet и run
Проблем
![](http://img.brin-designs.com/img/games/643/shell-script-telnet.png)
Направих шел скрипт, който може да телнет автоматично и да изпълнява команди на другата машина и да приключи сесията на telnet без никакво взаимодействие от потребителя; Потребителят просто изпълнява скрипта или го извиква от друг скрипт.
Но трябва да инсталирате EXPECT и TCL пакети на вашата Unix система.
Скриптът съдържа следните инструкции:
#! / usr / local / bin / expect -f #### / usr / local / bin / expect е директорията, където е инсталирано очакваното
log_user 0 #### Тази команда се използва за скриване на разговора между скрипта и другата машина
set address [lindex $ argv 0] ### присвоява първия преминал параметър, докато извиква скрипта на $ address
задайте потребителско име [lindex $ argv 1] ### задайте втория преминал параметър, докато извиквате скрипта към $ username
задайте парола [lindex $ argv 2] ### задайте 3-тия преминал параметър, докато извиквате скрипта към $ password
spawn telnet $ {address} ### започнете telnet сесията с машината с IP = $ address
### започнете разговор с устройството:
очаквайте „вход:“
send - "$ {username}" \ t
очаквайте „Парола:“
send - "$ {password}" \ t
очаквам "$"
send - "#! / bin / ksh" ### декларира черупката, която ще се използва (по избор)
очаквам "$"
изпрати - "### напишете всяка команда, която искате да изпълните"
очаквам "$"
send - "exit" ### приключва сесията на telnet и излиза от скрипта
За да изпълните този скрипт, написах:
$ expect_script "address" "username" "password" ### името на скрипта е "expect_script"
Но преди да извикате скрипта на очакваното, трябва да направите изпълнимия скрипт на очакваното, а това може да се направи, като напишете:
$ chmod + x expect_script
Решение
Опитайте тази:
#! / usr / local / bin / expect spawn telnet очаквайте "login:" send "очаквам" Парола: "send" n "send" bash "изпрати" cd / opt n "изпрати" ls - ltr \ t (ако не давате n, то ще изчака отговора ви или ще трябва да въведете ръчно). взаимодействат
Как да изпълним командата "очаквам", очаквайте -f
Пример: очаквайте -f .expect
Забележка
Благодарение на ZooZoo за този съвет на форума.