SecureCRT Script v1.0
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 : /*+ ??? 화면 출력 시점을 기준으로 사용하겠다란
의미로 추정됨 */
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