XShell 스크립트 API 오류 문의 [1]
XShell 스크립트 API 오류 문의
2018-07-13 09:58 - xshell6
XShell API 중 "WaitForStrings(VARIANT FAR* strArray, long nTimeout)" 반환 값이 Long
타입으로 반환값이 "발견된 문자의 숫자" 되어 있는데 "발견된 문자의 숫자" 의 의미가 무엇인지요?
Long 반환 값을 받기 위해 "Dim out AS Long" 설정하면 오류가 발생 합니다.
아래와 같이 스크립트을 작성하려고 하는데 Telnet 접속 후 Prompt가 "ID 0:" 인 경우
Case 0 의 설정 내용이 정상적으로 처리가 되는데 Prompt가 "ID 1:" 인 경우
Case 1 설정 내용이 실행되어야 할 것 같은데 스크립트가 멈춤네요.
WaitForStrings(prompt, 2) 의 prompt 내용을 Array 로 설정하면 되지 않되나요?
Dim result, prompt
Do Until File.AtEndOfStream
hostname = File.Readline
xsh.Screen.Send("telnet " + hostname + vbCrLF)
prompt = Array("ID 0:","ID1: ","ID2 :")
result = xsh.Screen.WaitForStrings(prompt, 2)
Select Case result
	Case 0
...............
		xsh.Session.Sleep(50)
	Case 1
................
		xsh.Session.Sleep(50)
	Case Else
		xsh.Session.Sleep(50)
End Select
Loop
프로그램 버전 : Xshell 6
타입으로 반환값이 "발견된 문자의 숫자" 되어 있는데 "발견된 문자의 숫자" 의 의미가 무엇인지요?
Long 반환 값을 받기 위해 "Dim out AS Long" 설정하면 오류가 발생 합니다.
아래와 같이 스크립트을 작성하려고 하는데 Telnet 접속 후 Prompt가 "ID 0:" 인 경우
Case 0 의 설정 내용이 정상적으로 처리가 되는데 Prompt가 "ID 1:" 인 경우
Case 1 설정 내용이 실행되어야 할 것 같은데 스크립트가 멈춤네요.
WaitForStrings(prompt, 2) 의 prompt 내용을 Array 로 설정하면 되지 않되나요?
Dim result, prompt
Do Until File.AtEndOfStream
hostname = File.Readline
xsh.Screen.Send("telnet " + hostname + vbCrLF)
prompt = Array("ID 0:","ID1: ","ID2 :")
result = xsh.Screen.WaitForStrings(prompt, 2)
Select Case result
	Case 0
...............
		xsh.Session.Sleep(50)
	Case 1
................
		xsh.Session.Sleep(50)
	Case Else
		xsh.Session.Sleep(50)
End Select
Loop
프로그램 버전 : Xshell 6
Re: XShell 스크립트 API 오류 문의
2018-07-16 16:50 - 넷사랑
안녕하십니까?
㈜넷사랑컴퓨터 기술지원입니다.
1. WaitForStrins 함수의 반환 값
WaitForStrings 함수는 WaitForString 함수와 달리 여러 개의 문자열을 주어진 시간 동안 기다립니다. 여러 개의 문자열은 배열로 정해 줍니다.
반환 값의 의미는 기다리는 문자 배열의 위치를 의미합니다. 특이하게도 이 함수는 첫번째 문자열을 1로 반환합니다.
반환 값 0의 의미는 주어진 시간 동안 배열 내의 어떠한 문자도 나타나지 않았음을 의미합니다.
반환 값의 종류가 Long 타입이지만 'AS Long'이라고 선언하지 않습니다.
2. 'ID 1:'에 반응을 보이지 않은 이유
보내 주신 스크립트상으로 대기하는 시간 동안 아무런 문자열이 나타나지 않았다고 판단하여 return 값이 0이 된 것입니다.
대기 시간 2 밀리초가 너무 짧은 시간이었던 것 같습니다.
다음과 같이 해 보세요.
...
Dim result, prompt
prompt = Array("ID 0:","ID1: ","ID2 :")
result = xsh.Screen.WaitForStrings(prompt, 2000)
...
참고로 며칠 전에 배포한 Xshell 6 빌드 0094 버전의 WaitForString 함수에 문제가 있습니다.
문제를 수정한 버전을 곧 배포하겠습니다. 이 점 참고하시기 바랍니다.
제품에 대한 유지 보수 라이선스를 가지고 계실 때 다음 기술지원 요청을 이용하시면 보다 신속한 기술지원을 받으실 수 있습니다.
http://www.netsarang.co.kr/support/request_form.html
감사합니다.
㈜넷사랑컴퓨터 기술지원입니다.
1. WaitForStrins 함수의 반환 값
WaitForStrings 함수는 WaitForString 함수와 달리 여러 개의 문자열을 주어진 시간 동안 기다립니다. 여러 개의 문자열은 배열로 정해 줍니다.
반환 값의 의미는 기다리는 문자 배열의 위치를 의미합니다. 특이하게도 이 함수는 첫번째 문자열을 1로 반환합니다.
반환 값 0의 의미는 주어진 시간 동안 배열 내의 어떠한 문자도 나타나지 않았음을 의미합니다.
반환 값의 종류가 Long 타입이지만 'AS Long'이라고 선언하지 않습니다.
2. 'ID 1:'에 반응을 보이지 않은 이유
보내 주신 스크립트상으로 대기하는 시간 동안 아무런 문자열이 나타나지 않았다고 판단하여 return 값이 0이 된 것입니다.
대기 시간 2 밀리초가 너무 짧은 시간이었던 것 같습니다.
다음과 같이 해 보세요.
...
Dim result, prompt
prompt = Array("ID 0:","ID1: ","ID2 :")
result = xsh.Screen.WaitForStrings(prompt, 2000)
...
참고로 며칠 전에 배포한 Xshell 6 빌드 0094 버전의 WaitForString 함수에 문제가 있습니다.
문제를 수정한 버전을 곧 배포하겠습니다. 이 점 참고하시기 바랍니다.
제품에 대한 유지 보수 라이선스를 가지고 계실 때 다음 기술지원 요청을 이용하시면 보다 신속한 기술지원을 받으실 수 있습니다.
http://www.netsarang.co.kr/support/request_form.html
감사합니다.
이전 조회수: 323
$