Ожидается, что скрипт продолжит выполнение после ответа пинга - PullRequest
0 голосов
/ 12 апреля 2020

Здравствуйте, я хочу создать скрипт для проверки ping после успешного завершения команды ping. Спасибо за вашу помощь

ниже моего кода

set ip [10.10.10.1,10.10.10.2]
foreach hostname $ip {
    spawn ping -c 2 -i 3 -W 1 $hostname
    expect { "0%" {
            spawn telnet $hostname
            expect "*sername:"
            send "$userper\n"
            expect "*assword:"
            send "$passper\n"
            expect "#"
            send "exit\n"
            expect eof
        }
    }

}    

1 Ответ

0 голосов
/ 12 апреля 2020

Во-первых, это set ip [10.10.10.1,10.10.10.2], скорее всего, даст вам invalid command name "10.10.10.1,10.10.10.2"

. Чтобы создать список, используйте set ip {10.10.10.1 10.10.10.2} - скобки и пробелы.

Далее, эта команда ping выполняет не требует никакой интерактивности, поэтому не вызывайте ее, просто exec it:

set ping_output [exec ping -c 2 -i 3 -W 1 $hostname]

А затем проверьте вывод на 0% - заметьте, вы не хотите совпадать 100% поэтому добавьте начальный пробел к шаблону:

if {[regexp { 0%} $ping_output]} {
    spawn telnet $hostname
    ...
}

является расширением , поэтому все команды Tcl находятся у вас удаление

...