Страница 1 из 1

Expect, проблема с потоком комманд

Добавлено: 2011-12-02 9:35:58
InventoR
Небольшой скрипт, который подключается к железкам Dlink и вводит на них ряд комманд.
Проблема в том что если хочу вывести много команд которые без 20 разового подключения к одной железке, а прогнать все за одно подключение.
Как известно иногда бывают ситуации что вывод не помещается в окно и тогда использование:

Код: Выделить всё

for  {} 1 {} {
    expect {
            -timeout 5
            "*Next Page*" { send "n" }
            "More:*space*" { send " " }
            "*#" exit 0
    }
}
помогает от этой проблемы (найдено на просторах сети), но мне хочется чтобы допустим 8 раз подряд выводилось show switch и система переходила на другое железо, получается так что отрабатывается только первая строка комманды из файла command.txt и скрипт завершает свою работу. Подозреваю проблема как раз в секции for, но как её правильно решить?

Код: Выделить всё

#!/usr/bin/expect -f

set remote_server [ lindex $argv 0]
set login [ lindex $argv 1]
set password [ lindex $argv 2]

set commandtxt [ open "command.txt" r]
foreach uline [split [ read $commandtxt] "\n" ] {


log_user 0 # Отключаем вывод на экран.
spawn telnet $remote_server
expect "UserName:" {send "$login\r"}
expect "PassWord:" {send "$password\r"}
#interact
log_user 1 # Нам необходим результат поэтому активируем вывод


expect "*#" {send "$uline\r"}

for  {} 1 {} {
    expect {
            -timeout 5
            "*Next Page*" { send "n" }
            "More:*space*" { send " " }
            "*#" exit 0
    }
}

send "logout\r\n"
log_user 0
}
close $commandtxt

Re: Expect, проблема с потоком комманд

Добавлено: 2012-02-26 21:16:07
Alex Keda
ну а чё бы не подключиться сколько надо раз-то?

Re: Expect, проблема с потоком комманд

Добавлено: 2012-02-27 8:17:51
InventoR
ну а если захочется 20 правил аксесса ввести на 1000 железках, это же сколько времени пойдет