이 름
runscript − minicom을 위 한 스 크 립 트 인 터 프 리 터
사 용 법
runscript 스 크 립 트
설 명
runscript 풀 그 림 은 간 단 한 스 크 립 트 인 터 프 리 터 이 다 . 이 것 은 minicom 통 신 풀 그 림 안 에 서 호 출 되 어 , unix 시 스 템 이 나 , 기 타 BBS에 접 속 과 정 을 자 동 으 로 처 리 해 준 다 .
호 출
이 풀 그 림 의 인 자 로 단 지 하 나 의 스 크 립 트 파 일 이 름 만 을 사 용 할 수 있 다 . 또 한 이 것 의 입 /출 력 은 단 지 연 결 된 호 스 트 를 대 상 으 로 만 하 고 있 다 . runscript에 서 처 리 하 는 모 든 메 시 지 는 현 재 화 면 의 것 을 입 력 받 아 , stderr로 보 낸 다 . 그 래 서 , 이 인 터 프 리 터 는 minicom에 서 작 동 되 도 록 고 안 작 성 되 었 다 .
참 고 : 이 스 크 립 트 파 일 은 초 기 값 으 로 /usr/lib/minicom 경 로 안 에 있 어 야 한 다 . (즉 , 기 본 적 으 로 시 스 템 관 리 자 만 이 이 스 크 립 트 파 일 을 관 리 할 수 있 다 . - 초 기 값 )
키 워 드
runscript는 다 음 의 명 령 들 을 인 식 한 다 :
expect send
goto gosub return !
exit print set inc dec if
timeout verbose sleep break call
키 워 드 개 요
send <문 자 열 >
<문 자 열
>은 모 뎀 으 로 보
낼 문 자 열 이 다 .
<문 자 열 >로 사
용 될 수 있 는 것
은 :
- 단 순 한 단 어 , 예
’send hello’
- 따 움 표 로 둘 러
싼 단 어 들 , 예 ’send
"hello world"’
<문 자 열 > 안 에 는 다 음 과 같 은 제 어 문 자 들 을 사 용 할 수 있 다 .
\n - 새 줄
\r - 리 턴 문 자
\a - 벨 소 리
\b - 백 스 페 이 스
\c - 초 기 값 인 ’\r’
자 동 보 내 기 를
하 지 않 음 .
\f - 용 지 바 꿈 문 자
\o - o문 자 보 냄
(o는 8진 수 를 뜻
한 다 .)
또 한 $(환 경 변 수 _값 )을 사 용 할 수 있 다 . 예 : $(TERM). minicom에 서 는 두 개 의 특 별 한 환 경 변 수 값 을 제 공 하 는 데 , 사 용 자 ID로 $(LOGIN), 비 밀 번 호 로 $(PASS)가 그 것 이 다 . 이 값 은 전 화 번 호 부 에 서 지 정 한 다 .
print <문 자 열 >
<문 자 열 >을 현 재 화 면 에 출 력 한 다 . 끝 에 는 자 동 으 로 ’\r\n’ 문 자 가 붙 는 다 . 나 머 지 는 ’send’와 사 용 법 이 같 다 .
label:
goto나 gosub에 의 해 이 동 되 는 분 기 점 을 지 정 .
goto <label>
스 크 립 트 안 에 서 다 른 위 치 로 이 동 한 다 .
gosub <label>
서 브 goto로 ’return’에 도 달 했 을 때 , 현 재 의 영 역 안 에 서 이 동 한 다 .
return
gosub 영 역 을 벗 어 난 다 .
! <명 령 >
쉘 명 령 을 실 행 한 다 . 그 명 령 의 리 턴 값 은 $? 변 수 에 저 장 된 다 . 그 래 서 , ’if’ 문 으 로 선 택 적 인 문 을 만 들 수 있 다 .
exit [값 ]
부 여 한 값 돌 려 주 며 , "runscript"를 마 친 다 . 초 기 값 1
set <변 수 명 > <변 수 값 >
<변 수 명 >은 a부 터 z까 지 의 단 일 문 자 이 며 , 이 변 수 에 <변 수 값 >을 지 정 한 다 . 변 수 선 언 없 이 사 용 되 면 , 즉 시 만 들 고 , <변 수 값 >은 숫 자 나 다 른 변 수 여 야 한 다 .
inc <변 수 명 >
<변 수 명 >의 변 수 값 을 하 나 씩 증 가 시 킨 다 .
dec <변 수 명 >
<변 수 명 >의 변 수 값 을 하 나 씩 감 소 시 킨 다 .
if <변 수 > <연 산 자 > <변 수 > <문 >
사 용 할 수 있 는 연 산 자 는 <, >, !=, -. 예 , ’if a > 3 goto exitlabel’.
timeout <값 >
제 한 시 간 을 설 정 한 다 . 초 기 값 으 로 ’runscript’ 전 체 실 행 시 간 은 2분 이 다 . 즉 , 특 별 히 시 간 을 정 해 놓 지 않 으 면 , 2분 후 에 는 자 동 으 로 종 료 된 다 . 이 값 을 이 명 령 으 로 바 꿀 수 있 다 . 이 명 령 은 ’expect’ 문 에 서 는 다 르 게 동 작 한 다 . 아 래 참 조 .
verbose <on|off>
초 기 값 은 ’on’. ’runscript’ 작 동 상 태 를 화 면 에 서 볼 수 있 게 한 다 .
sleep <값 >
<값 > 초 동 안 실 행 을 잠 시 멈 춘 다 .
expect
expect {
패 턴 [문 ]
패 턴 [문 ]
[timeout <값 > [문 ] ]
....
}
가 장 중 요 한 명
령 어 이 다 . 패 턴
을 기 다 려 서 , 해
당 패 턴 이 나 타
나 면 , 해 당 <문
>을 실 행 한 다 . 패
턴 은 ’send’에 서
설 명 한 문 자 열
이 며 , 일 반 적 으
로 첫 번 째 , 패 턴
에 대 한 문 은 생
략 해 서 , 만 일 첫
번 째 패 턴 이 나
타 나 면 , 바 로 expect
문 을 벗 어 나 다
음 작 업 을 계 속
하 도 록 한 다 . 만
일 이 때 , 첫 번 째
패 턴 이 나 타 나
지 않 고 , 두 번 째
패 턴 이 나 타 난
다 면 , 두 번 째 패
턴 에 서 지 정 한
문 을 실 행 한 다 .
초 기 값 으 로 expect의
최 대 시 간 은 60초
이 다 . 이 것 을 바
꾸 려 면 timeout을 사 용
한 다 .
break
’expect’ 문 을 중 지 한 다 . 이 명 령 은 ’timeout’ 명 령 에 대 한 문 으 로 일 반 적 으 로 사 용 된 다 . ’timeout’에 대 한 아 무 른 작 업 을 지 시 하 지 않 으 면 , 제 한 시 간 을 초 과 했 을 경 우 , 그 스 크 립 트 자 체 를 마 쳐 버 리 기 때 문 이 다 .
call <스 크 립 트 이 름 >
다 른 <스 크 립 트 이 름 >의 파 일 을 불 러 와 실 행 한 다 . 이 때 아 무 런 오 류 가 나 지 않 으 면 나 머 지 스 크 립 트 를 실 행 한 다 .
참 고
그 다 지 프 로 그 래 밍 에 대 한 지 식 이 없 어 도 쉽 게 만 들 수 있 을 것 이 라 생 각 한 다 . BASIC 정 도 를 한 번 쯤 사 용 해 본 사 람 이 라 면 쉽 게 작 성 할 수 있 을 것 이 다 . minicom 패 키 지 안 에 는 scriptdemo, unixlogin 등 몇 개 의 스 크 립 트 파 일 이 예 제 로 있 는 데 , 이 것 을 참 고 한 다 면 , 보 다 유 용 한 스 크 립 트 파 일 을 만 들 수 있 을 것 이 다 .
벌 레
runscript는 minicom용 으 로 고 안 , 작 성 되 었 기 때 문 에 , 다 른 곳 에 서 는 제 대 로 동 작 하 지 않 을 수 있 다 .
만 든 이
Miquel van Smoorenburg, <miquels [AT] drinkel.org>