Скрипт Shell для команд telnet і run
Проблема
Я зробив сценарій оболонки, який може автоматично telnet і виконувати команди на іншій машині і завершити сеанс telnet без будь-якої взаємодії з користувачем; користувач просто запускає скрипт або викликає його з іншого сценарію.
Але вам потрібно встановити пакети EXPECT і TCL на вашу систему Unix.
Сценарій містить такі інструкції:
#! / usr / local / bin / expect -f #### / usr / local / bin / expect - це каталог, де було встановлено очікування
log_user 0 #### Ця команда використовується для приховування розмови між скриптом і іншою машиною
set address [lindex $ argv 0] ### призначає перший переданий параметр під час виклику скрипта до $ address
set username [lindex $ argv 1] ### призначає другий переданий параметр під час виклику скрипта до $ username
set password [lindex $ argv 2] ### привласнюють третій пройдений параметр при виклику скрипта до $ password
spawn telnet $ {address} ### почати сеанс telnet для роботи з IP = $ address
### почати розмову з машиною:
очікувати "вхід:"
send - "$ {username}" \ t
очікуйте "Пароль:"
send - "$ {password}"
очікувати "$"
send - "#! / bin / ksh" ### оголосити оболонку, яка буде використовуватися (необов'язково)
очікувати "$"
send - "### введіть будь-яку команду, яку ви хочете виконати"
очікувати "$"
send - "exit" ### завершити сеанс telnet і вийти з сценарію
Щоб виконати цей сценарій, я ввів:
$ expect_script "address" "username" "password" ### назва сценарію - "expect_script"
Але перш ніж викликати сценарій очікування, слід виконати виконуваний сценарій очікування, і це можна зробити, ввівши:
$ chmod + x expect_script
Рішення
Спробуйте це:
#! / usr / local / bin / expect spawn telnet очікують "вхід:" відправити "n" очікувати "пароль:" відправити "\ t ltr n "? (якщо ви не даєте n, то він буде чекати вашого відповіді або вам потрібно ввести ввід вручну). взаємодіяти
Як виконати команду "expect" очікують -f
Приклад: очікуйте -f .expect
Примітка
Завдяки ZooZoo за цей відгук на форумі.