본문 바로가기

TECH DOC

SecureCRT Script v1.0

SecureCRT Script v1.0

 

Date

Ver

Etc.

2011.04.20

v1.0

 

 

 

 

 

 

 

 

 

1.    SecureCRT Script

Secure CRT Script 는 두가지 의미를 가진다.

 

-      menu bar 에서의 Script

-      Logon Script

 

menu bar 에서의 Script -     http://h391106.tistory.com/114 에서도 이야기 한 적이 있다.

Logon Script js, pl, vbe, vbs 와 같은 스크립트를 사용할 수 있다.

 

menu bar 에서의 Script 의 경우 Session 을 맺고 입력한 명령어들을 저장해 다른 세션에서도 사용할 수 있다. 다만 로깅된 정보가 말 그대로 입력을 로깅을 해놓았기 때문에 중간중간에 잘못된 입력이 있는 경우 이를 다 수정해야 하며 동일환경이 아닌 경우 문제가 발생할 수 있다. (특히 상대경로를 사용하는 경우)

 

Logon Script 의 경우 프로그래밍한다 생각하면 된다. 흐름제어가 가능하기 때문에 위의 Script 와 다르게 다양한 활용이 가능하다.

 

2.    Usage of SecureCRT

A.     Logon script 의 사용방법


Logon script 는 위와같이 지정할 수 있다.

 

사용할 수 있는 Script 의 종류로 vbs, vbe, js, pl 이 있다.

vbs 를 제외한 다른 스크립트의 제약사항으로 화면 로깅이 불가능한 것으로 추정된다.

추정이라 함은 Vandyke Script Sample 을 봤을 때 로깅에 대한 샘플이 vbs (Visual basic script) 밖에 없었기 때문에 위와 같이 이야기 했다. (방법이 있을 수도 있지만 추가적인 조사는 하지 않았다.)

 

B.     Logon script 의 용도

-      Logon 하면서 일련의 배치 작업을 수행해야 할 때

-      Logon 하면서 항상 하는 작업에 대해 자동화가 필요할 때

-      Logon 하면서 세션에 대해 Logging 을 하고자 할 때

-      기타등등

 

C.     Command 종류 (vbs 기준)

-      Dim variable_name : 변수선언

-      crt.Dialog.Prompt (“”, “”) : Prompt 창 호출

-      crt.Screen.Send “string” : 문자열 전송

-      crt.Screen.WaitForString “pattern” : “pattern” 의 입력을 대기한다.

-      crt.Session.LogFileName = “file_path + file_name” : 로깅시 사용할 경로 및 파일이름

-      crt.Session.Log True : 로깅시작

-      crt.Scrren.Synchronous = TRUE | FALSE : /*+ ??? 화면 출력 시점을 기준으로 사용하겠다란 의미로 추정됨 */

 

3.    SCENARIO

Session 에 연결을 시도하면 Prompt 창이 출력된다.

Prompt 창에는 Session 연결 후 타 서버로 연결하기 위한 hostname 을 입력받는다.

(* 최초 연결된 Session 을 일종의 gateway 라고 생각하면 된다. *)

hostname 을 입력하면 해당 장비로 자동 logon 한다.

logon 이 끝나면 해당 장비의 hostname 과 년//일 을 파일 이름으로 로깅을 시작한다.

 

# $language = "VBScript"

# $interface = "1.0"

 

Sub Main

 

             Dim host_name

             host_name = crt.Dialog.Prompt("Enter a host name", "Connect")

 

             'connect to specific server                        

             crt.Screen.Send "telnet " + host_name + " -l oracle" & VbCr

             crt.Screen.WaitForString "Password:"

             crt.Screen.Send "oracle" & VbCr

            

             'change user to super user

             crt.Screen.Send "su -" & VbCr    

             crt.Screen.WaitForString "Password:"

             crt.Screen.Send "oracle" & VbCr  

 

             'Start Logging

  crt.Session.LogFileName = "D:\"+ host_name +"_%Y%M%D%h%m.log"

crt.Session.Log True

  crt.Screen.Send "date" & vbCr

  crt.Screen.Synchronous = False

 

End Sub

 

a.    Dim 으로 host_name 을 선언하고 crt.Dialog.Prompt 를 통해 hostname 을 입력으로 받는다.

b.    이후 Screen telnet hostname -l oracle 이란 명령을 전송한다. 명령어 뒤에 & VbCr 이라 붙였는데 Enter 역할과 동일하다. -l 옵션은 어떤 User 로 접속할지 인자를 받는다. 이를 사용한 이유는 다음의 WaitForString 을 정의했음에도 불구하고 바로 다음 명령이 실행되는 문제로 위와같이 사용했다.

c.    Password: 라는 입력을 대기했다가 암호를 전송하여 접속을 완료한다.

d.    다음에 super user change 하고 c 와 동일하게 암호를 대기했다가 전송하여 명령을 완료한다.

e.    root 위치에서 로그를 어디에 어느파일에 쌓을지 정의 후 Session.Log True 를 할당하면서 로깅을 시작한다.

f.      로깅옵션으로 "D:\"+ host_name +"_%Y%M%D%h%m.log" 와 같이 사용했는데 %{character} Program 내에 사용되는 특수변수이다. %Y year(yyyy), %M month, %D date, %h hour (24H), %m minute 를 의미한다. 그 외에도 %H : hostname, %S : session name 과 같은 옵션이 있다. 다만 위에서는 특정서버를 허브로 다른 서버에 접속하는 형태로 사용하기 때문에 %H %S 옵션은 구분자로서 큰 의미를 두기 어렵다. 오히려 입력변수 host_name 을 파일 이름에 사용하는게 명시적이다.

 

4.    References

A.     Vandyke Software | http://www.vandyke.com/support/securecrt/scripting_examples.html