expect(1)
인터랙티브한 프로그램과 대화하는 프로그램. telnet, ftp 등 사용자와 입출력을 요구하는 프로그램으로부터 지정된 문자열을 받으면 지정한 응답 문자열을 내보낸다. telnet 의 자동접속 등에 사용할 수 있다.
옛날에 학교에서 telnet 으로 수강신청을 하던 당시에, 정원이 초과된 과목에 들어가기 위해서 만든 스크립트. 다른 사람들은 윈도우가 깔려 있는 곳에서 새롬데이타맨을 사용하여 같은 방법을 시도했는데, 윈도우가 설치된 PC는 사용하려는 사람들이 많아서 상당히 눈치가 보이고, 위험하기도 하다. 아주 약간의 유닉스 사용법을 알고 있었던 덕에 나는 공대전산실 워크스테이션룸에서 아침에 이 스크립트를 실행하고, 모니터를 끄고 앞에 건드리지 말라는 메모를 붙여 둔 후 (지금 생각하니까 이 역시 위험하긴 마찬가지였지 싶은데) 저녁때 와서 제대로 들어갔는지를 확인했다. 며칠 동안 계속 시도할 생각이었는데, 싱겁게 반나절 만에 성공.
-
#! /usr/local/bin/expect
spawn telnet sugang1
expect "login :"
sleep 1
send "sugang\r"
expect "word:"
sleep 1
send "sugang\r"
expect "6.5."
sleep 2
send "xxxxx-xxx\r" # 내 학번
sleep 1
send "xxxxxx\r" # 내 주민등록번호
sleep 1
send "xxxx\r" # 내 암호
expect "작업"
sleep 3
# 수정
send "2\r"
sleep 3
# 연번
send "2\r"
expect "2"
sleep 2
# 넣고 싶은 강좌번호
send "007.009\r"
sleep 1
send "001\r"
# 여기서부터 무한루프로 돌린다
while 1 {
expect "정원이 초과되어"
sleep 2
# 다시 2.수정
send "2\r"
sleep 2
# 연번
send "2\r"
expect "2"
sleep 2
# 강좌번호
send "007.009\r"
sleep 1
send "001\r"
}
interact
뜸금없이 갑자기 왜 Expect 얘기가 나왔냐 하면... 더 이상 쓰지 않는 계정 하나를 정리하던 와중에 bin 디렉토리 아래 저 스크립트가 발견되었기 때문이다.. 더 이상 쓸모없지만 그냥 지워버리기는 아깝고 해서..
컴퓨터분류