Xshell 게시판

VBS 사용 시 # 출력 및 버그

최종입력: 2012-07-26 17:02 - 넷사랑 | 답글: 5건

 
2012-07-23 11:16 - 김승준

VBS 사용 시 # 출력 및 버그

 
세션연결 후 VBS로 로그인 스크립트를 실행하고 있습니다.
그런데 shell로 #을 보내려고 하니 #이 출력이 되지 않더군요.
그래서 ksh shell script를 사용하는데 여러가지 불편하네요.

혹시 #이 XShell에서 예약어라서 출력이 안되는 것이라면,
어떻게 하면 저 캐릭터 출력이 가능한지 알려주셨으면 합니다.

ex)
xsh.Screen.Send "###Test" + chr(13)
이렇게 vbs를 작성하면 #은 출력 안되고 Test만 출력됨 chr(35) (#의 ASCII)를 사용해도 마찬가지

p.s. 그리고 특정 서버 연결했다가 연결끊고 Xshell의 로컬 셀로 돌아와서 다시 해당 ssh서버에 접속하면 로그인 스크립트가 실행이 되지 않네요.

프로그램 버전 : Xshell 4
2012-07-23 17:21 - 넷사랑

Re: VBS 사용 시 # 출력 및 버그

 
안녕하십니까?
넷사랑컴퓨터 기술지원입니다.

# 문자는 시스템 예약어는 아닙니다. 저희가 한 테스트에서는 바로 출력이 되는 것으로 보아 사용하시는 환경에 어떤 추가적인 설정이 있는 것 같습니다.

셸에서는 #이 주석문 기호로 사용되기는 하지만 기본 설정상으로는 특수한 문자에 해당하지는 않습니다.
다만 사용자가 이 문자를 터미널 제어 문자로 지정할 수 있으니 다음 명령어로 이 부분 확인해 보십시오.

stty -a

그리고 로그인 스크립트는 세션에 저장되는 설정이므로 세션을 실행하여야 적용이 됩니다. 저희가 이해 못한 부분이 있다면 좀 더 자세한 설명 내지는 재현 방법 부탁드립니다.

문제를 해결할 수 없어 다시 문의하시고자 할 때 다음 정보를 확인해 주십시오.

1. 사용하시는 유닉스/리눅스의 종류와 버전
2. 접속 프로토콜 (SSH, Telnet 등)
3. 스크립트를 실행한 곳.(셸 명령 프롬프트, vi 등)
4. 스크립트의 내용
5. 명령 프롬프트에서 # 문자를 입력한 결과


감사합니다.
2012-07-24 09:25 - 김승준

Re: VBS 사용 시 # 출력 및 버그

 
#문자 출력이 안되는 문제는 해당 로그인 스크립트 시작시에
xsh.Session.Sleep(1000)
를 통해 잠시 텀을 두고 처리하는 방식으로 하니까 해결이 되었습니다.
뭔가 서버와 ssh로 로그인 중에는(혹은 완벽히 xsh의 session이 활성화가 안된 상황?)
#입력 을 무시하도록 되어있는 부분이 있는거 같네요.

참고로 서버는 HP-UX B.11.31에 ssh로 접속하였고, vbs스크립트는 세션 등록정보의 로그인 스크립트로 등록되어있던 것입니다. 스크립트 내용은 단순히 ksh에서 몇몇 function 및 alias을 등록하는 내용입니다 (보안정책 상 user profile 수정이 불가능해서 이런 방식으로 사용) 그리고 물론 명령 프롬프트에서 #을 입력하면 잘 입력됩니다.

그리고 로그인 스크립트는 다음의 단계를 거칠 때 처리가 안되던데 이게 원래 XShell에서 의도한 것인지 아니면 버그인지 모르겠네요.

1. XShell을 시작한다 (초기설정에 "XShell 시작 시 세션 대화 상자 열기" 체크되어있음)
2. ssh 서버로 접속 (해당 ssh서버는 등록정보에 vbs로 로그인 스크립트가 등록)
3. ssh 서버로 정상 접속되고 등록된 vbs 로그인 스크립트도 정상 동작.
4. ssh 서버와의 접속을 끊는다.
5. XShell:\> 프롬프트에서 open 명령으로 세션 대화 상자를 연다
6. 아까 접속했던 ssh 서버로 재 접속한다.
7. ssh 서버로 정상 접속이 되나, vbs 로그인 스크립트가 동작하지 않음
2012-07-24 17:22 - 넷사랑

Re: VBS 사용 시 # 출력 및 버그

 
1. # 문자가 찍히지 않는 문제.

HP-UX의 기본 erase(앞 글자를 지움) 값이 #으로 되어 있습니다. 이 값이 /etc/profile이 읽히면서 ^H 값 등으로 변경이 됩니다. 문제는 사용자가 실행하도록 정한 스크립트가 /etc/profile이 읽히기 전에 실행이 되어 모든 #이 앞 글자 지움(erase)으로 동작했기 때문입니다.

xsh.Session.Sleep()으로 /etc/profile이 읽히기까지 지연을 하는 방법도 가능하겠지만 좀 더 정확히는 프롬프트 문자열을 기다린 후 나머지 스크립트를 진행하는 방법을 사용할 것을 권합니다.

Sub Main
'xsh.Session.Sleep(1000) => 이것 보다는
xsh.Screen.WaitForString "프롬프트 문자열" => 이것을 권합니다.
xsh.Screen.Send "###Test"
xsh.Screen.Send vbCr
End Sub

2. open 명령으로 다시 연 세션에서는 스크립트가 적용되지 않는 상황

말씀해 주신 재현 방법을 포함하여 다각도로 테스트를 해 보았습니다. 어떤 세션 파일로 접속 후 다시 그 세션 파일을 실행해도 스크립트는 실행이 되었습니다.
Xshell은 세션 파일을 폴더로 관리할 수 있는 기능이 있어서 같은 이름의 세션 파일이 다른 폴더에 있는 경우가 종종 있습니다.
혹시 같은 이름의 다른 세션 파일이 아닌지 확인 바랍니다.
문제의 상황에서 Alt+P 등으로 해당 세션의 등록 정보를 확인해 보십시오.
이 문제가 해결되지 않아 다시 문의하실 경우는 해당 세션 파일과 스크립트 파일을 보내 주시면 도움이 되겠습니다.

감사합니다.
2012-07-25 17:21 - 김승준

Re: VBS 사용 시 # 출력 및 버그

 
#문자 찍히지 않는 현상은 알려주신대로 WaitForString을 사용하니 안정적으로 잘 작동합니다 ^^ 친절한 답변 감사합니다.

로그인 스크립트 수행 안되는 현상은 단계별로 스크린샷과 스크립트, 세션 파일을 첨부했습니다.

스크린샷 설명은 다음과 같습니다.
1. XShell 실행.
2. open 명령으로 서버접속 후 정상적으로 로그인 스크립트가 수행된 상황에서 Alt+P로 세션정보 연 상태
3. Ctrl + D 로 세션연결을 끊고 XShell 프롬프트로 돌아옴
4. open 명령으로 아까와 동일 서버 접속 후 세션정보 연 상태. (보시면 로그인 스크립트가 세션정보에는 지정되어있지만, 수행되지 않았습니다.)
첨부파일 report.zip (433.7 KB)  
2012-07-26 17:02 - 넷사랑

Re: VBS 사용 시 # 출력 및 버그

 
우선은 자세한 재현 방법에 감사드립니다.

보내 주신 스크립트 관련 파일들로 같은 방법으로 테스트했을 때에는 정상적으로 스크립트가 잘 실행되었습니다.

세션을 연 후 스크립트가 실행될 때 해당 스크립트가 완료되지 않는 상태로 남아 있는 경우가 있습니다. 이 경우라면 세션을 종료하고 탭은 닫지 않은 상태에서 다시 접속하여도 스크립트가 실행되지 않는 경우가 있습니다.
세션을 종료한 후 메뉴의 '도구 -> 스크립트'에 '시작'이 아닌 '취소'가 활성화되어 있다면 위와 같은 경우입니다.

이 부분 확인해 보십시오.