Всем привет!
Пишу тестовый скрипт для парсинга ответов от smtp server'a
Инструмент: expect, telnet.
алгоритм: в скрипте expect посылаю запрос на сервер с помощью telnet'a. Получаю ответ. В зависимости от возвращаемого кода ошибки в telnet выхожу из скрипта с тем или иным кодом.
Expect script (пример функции для тестирования посылки сообщения MAIL FROM: <+1234567890>):
proc mail_from {} {
send "MAIL FROM_%? <+180938592437>\r" #ошибка специально тут
expect {
"500*"
{
send_user "test passed \n"
exit 0
}
-re "(?!(^500*))" #все ошибки кроме 500 - как правильно составить regexp?
{
send_user "test was not passed \n"
exit 1
}
}
}
Как видно из скрипта мне надо получить код ошибки «500 + какой-то текст» тогда тест пройден (возвращается 0). Иначе - тест не пройден (возвращается 1).
не получается сделать регулярное выражение для всех возвращаемых кодов ошибок кроме 500. То есть все, когда, кроме 500 - означают, что тест не пройден.
Помогите, пожалуйста, может не учёл какие-то особенности expect.
Спасибо.