링크 ux 에서 expect 의 소개 와 사용 예제
우 리 는 Shell 을 통 해 순환, 판단 등 간단 한 흐름 제어 기능 을 실현 할 수 있다.그러나 상호작용 이 필요 한 상황 에 대해 서 는 인공 적 으로 관여 해 야 한다. 가끔 우 리 는 텔 넷 서버 등 과 상호작용 을 하 는 기능 을 실현 해 야 할 수도 있다.expect 는 이러한 기능 을 실현 하 는 도 구 를 사용한다.
expect 는 사람의 간섭 없 이 자동 과 상호작용 임 무 를 실현 하 는 무료 프로 그래 밍 도구 언어 입 니 다.Expect 의 저자 Don Libes 는 1990 년 Expect 를 작성 하기 시 작 했 을 때 Expect 에 대해 다음 과 같은 정 의 를 내 렸 다. Expect 는 자동 상호작용 기능 을 실현 하 는 소프트웨어 세트 (Expect [is a] software suite for automating inteactive tools) 이다.시스템 관리자 의 스 크 립 트 를 사용 하면 명령 이나 프로그램 에 대한 입력 을 실현 할 수 있 습 니 다. 이 명령 과 프로그램 은 터미널 (terminal) 에서 입력 을 받 기 를 원 합 니 다. 일반적으로 이 입력 은 수 동 으로 입력 해 야 합 니 다.expect 는 프로그램의 알림 시 뮬 레이 션 표준 입력 에 따라 프로그램 에 필요 한 입력 을 제공 하여 상호작용 프로그램 을 실행 할 수 있 습 니 다.간단 한 BBS 챗 봇 을 실현 할 수도 있다.:)
expect 는 끊임없이 발전 하 는 것 이다. 시간 이 흐 르 면서 그 기능 은 점점 강해 지고 시스템 관리자 의 강력 한 조수 가 되 었 다.Expect 는 Tcl 프로 그래 밍 언어 지원 이 필요 합 니 다. 시스템 에서 Expect 를 실행 하려 면 먼저 Tcl 을 설치 해 야 합 니 다.
2. 기대 작업 원리
가장 간단 한 차원 에서 말하자면, Expect 의 작업 방식 은 유 니 버 설 화 된 Chat 스 크 립 트 도구 와 같다.Chat 스 크 립 트 는 컴퓨터 간 연결 이 필요 할 때 특정 로그 인 세 션 의 자동 화 를 위해 UUCP 네트워크 에 최초 로 사 용 됩 니 다.
Chat 스 크 립 트 는 일련의 expect - send 쌍 으로 구성 되 어 있 습 니 다. expect 대기 출력 에서 특정한 문 자 를 출력 합 니 다. 보통 프롬프트 다음 에 특정한 응답 을 보 냅 니 다.예 를 들 어 아래 의 Chat 스 크 립 트 는 표준 출력 을 기다 리 는 로그 인 문자열 을 구현 하고 somebody 를 사용자 이름 으로 보 냅 니 다.그리고 Password: 프롬프트 를 기다 리 고 응답 sillyme 을 보 냅 니 다.
인용: 로그 인: 누 군가 비밀번호: sillyme
이 스 크 립 트 는 로그 인 과정 을 실현 하고 특정한 사용자 이름과 비밀번호 로 로그 인 합 니 다.
expect 의 가장 간단 한 스 크 립 트 작업 모드 는 본질 적 으로 Chat 스 크 립 트 작업 모드 와 같 습 니 다.
3. 하나의 예:
#!/usr/bin/expect -f
set ip [lindex $argv 0 ] // , IP
set password [lindex $argv 1 ] // ,
set timeout 10 //
spawn ssh root@$ip // ssh �E
expect { //
"*yes/no" { send "yes\r"; exp_continue} // ssh yes/no,
"*password:" { send "$password\r" } // ,
}
interact // , .
실행 결과:
root@ubuntu:/home/zhangy# ./test.exp 192.168.1.130 admin
spawn ssh [email protected]
Last login: Fri Sep 7 10:47:43 2012 from 192.168.1.142
[root@linux ~]#
총결산
이상 은 Liux 에서 expect 예제 를 사용 하 는 모든 내용 입 니 다. 본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다. 궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.