secureCRT VBS с использованием WaitForStrings() и Switch Case
Это скрипт для имитации ответов от компьютера, моя проблема в том, что "WaitForStrings" не различают "open" и "open1" или "close" и "close1", он всегда отвечает "open" и "close"
firstopen=true
while(true)
strResult = crt.Screen.WaitForStrings("open1","close1","open","close","SCAN")
Select Case strResult
Case 1
crt.Sleep 500
crt.Screen.Send("open1_ok") & chr(13)
Case 2
crt.Sleep 500
crt.Screen.Send("close1_ok") & chr(13)
Case 3
If firstopen=true then
crt.Sleep 500
crt.Screen.Send("open_ok") & chr(13)
firstopen=false
else
crt.Sleep 500
crt.Screen.Send("ok") & chr(13)
firstopen=true
end if
Case 4
crt.Sleep 500
crt.Screen.Send("ready") & chr(13)
Case 5
crt.Sleep 500
crt.Screen.Send("CCD_PASS") & chr(13)
Case Else
crt.Screen.Dialog "We didn't find what we were looking for"
End Select
wend
1 ответ
Может быть актуальным
Из Руководства по использованию VBScript в SecureCRT - Страница 41 (отрывок)
Избегайте пропущенных данных сScreen.Synchronous = True
Во избежание потенциального
WaitForString()
и связанные с ним методы пропуска данных, отправляемых с удаленного устройства во время выполнения другого кода в вашем скрипте, важно знать оSynchronous
свойство, связанное сScreen
объект. Возможно, вы виделиScreen.Synchronous = True
операторы появляются в некотором примере кода, который вы видели ранее в этом документе; этот раздел пытается объяснить, когда было бы важно использовать такие операторы в вашем коде....
Если в вашем коде сценария "отсутствуют" данные, отображаемые на экране, проверьте код и убедитесь, что
Synchronous
собственностьScreen
объект, с которым вы работаете, установлен наTrue
, Имейте в виду, однако, что настройкаScreen.Synchronous
вTrue
может показаться, что это влияет на производительность SecureCRT, потому что данные не будут отображаться на экране, пока вызовыWaitForString
,WaitForStrings
,ReadString
, или жеWaitForCursor
сделаны. Например, следующий код скрипта приведет к успешному соединению с удаленным хостом, но в окне терминала ничего не будет отображаться, так как скрипт работает постоянно (без каких-либо вызововReadString
,WaitForString
,WaitForStrings
, или жеWaitForCursor
).
Попробуйте ввести в вашу третью строковую команду следующую строку:
strResult = crt.Screen.WaitForStrings(["open1","close1","open","close","SCAN"])
Надеюсь, это поможет!!