linux expect 용법 수기

http://hi.baidu.com/jackywdx/item/9c5c06e1e560bb0e8d3ea88c
expect 를 사용 하여 자동 로그 인 을 실현 하 는 스 크 립 트 는 인터넷 에 많 지만 명확 한 설명 이 없습니다. 초보 자 들 은 보통 베 끼 고 소장 합 니 다.근 데 왜 그 랬 는 지 모 르 겠 어 요.본 고 는 가장 짧 은 예 로 스 크 립 트 의 원 리 를 설명 한다.  스 크 립 트 코드 는 다음 과 같 습 니 다:    ##############################################    #!/usr/bin/expect    set timeout 30    spawn ssh -l username 192.168.1.1    expect "password:"    send "ispass\r"    interact    ##############################################    1. [#!/usr/bin/expect]  이 줄 은 운영 체제 스 크 립 트 의 코드 를 셸 로 실행 하 라 고 알려 줍 니 다.이곳 의 expect 는 사실 Liux 아래 의 bash, windows 아래 의 cmd 와 같은 것 이다.  메모: 이 줄 은 스 크 립 트 의 첫 줄 에 있어 야 합 니 다.    2. [set timeout 30]  기본적으로 영 어 를 아 는 사람들 은 모두 이것 이 시간 초과 설정 이라는 것 을 안다. 지금 너 는 그의 시간 단위 가: 초 라 는 것 을 기억 하기 만 하면 된다.    3. [spawn ssh -l username 192.168.1.1]  spawn 은 expect 환경 에 들 어가 야 실행 할 수 있 는 expect 내부 명령 입 니 다. expect 를 설치 하지 않 거나 기본 SHELL 에서 실행 하지 않 으 면 spawn 명령 을 찾 을 수 없습니다.그 러 니 "which spawn" 과 같은 명령 으로 spawn 명령 을 찾 지 마 세 요. windows 의 dir 는 내부 명령 입 니 다. 이 명령 은 셸 이 직접 가지 고 있 습 니 다. dir. com 이나 dir. exe 의 실행 가능 한 파일 을 찾 을 수 없습니다.  그것 의 주요 기능 은 ssh 실행 프로 세 스에 케이스 를 추가 하여 상호작용 명령 을 전달 하 는 것 이다.    4. [expect "password:"]  여기 expect 도 expect 의 내부 명령 입 니 다. 좀 어 지 럽 죠? expect 의 셸 명령 은 내부 명령 과 같 지만 하나의 기능 이 아니 라 습관 이 되 었 으 면 좋 겠 습 니 다. 이 명령 은 지난번 출력 결과 에 'password:' 가 포함 되 어 있 는 지 판단 하 는 것 입 니 다.있 으 면 바로 돌아 갑 니 다. 그렇지 않 으 면 일정 시간 을 기 다 렸 다가 돌아 갑 니 다. 여기 서 기다 리 는 시간 은 앞에서 설정 한 30 초 입 니 다.    5. [send "ispass\r"]  이것 은 바로 상호작용 동작 을 수행 하고 수 동 으로 비밀 번 호 를 입력 하 는 동작 과 같은 효 과 를 가진다.  따뜻 한 알림: 명령 문자열 의 끝 에 '\ r' 를 추가 하 는 것 을 잊 지 마 세 요. 이상 한 대기 상태 가 있 으 면 확인 해 보 세 요.    6. [interact]  실행 이 끝 난 후 대화 상 태 를 유지 하고 콘 솔 에 제어 권 을 맡 깁 니 다. 이 때 는 손 으로 작업 할 수 있 습 니 다. 이 로그 인 이 완료 되 지 않 으 면 원 격 터미널 에 있 는 것 이 아니 라 종료 합 니 다. 로그 인 만 하고 실행 하면 됩 니 다.  \ #! / usr / bin / expect \ # 설치 경 로 를 주의 하 십시오. whereis expect 가 확실 하지 않 습 니 다.    # Change a login shell to bash    set user [lindex $argv 0]    spawn bash $user    expect "]:"    send "/bin/bash "    expect eof    exit
PS:
  my expect code:
  1 #!/usr/bin/expect
  2 set timeout 30
  3 send "adb root\r"
  4 send "adb remount\r"
  5 spawn adb shell 
  6 expect "#"
  7 send "labtool\r"
  8 expect "Enter option:"
  9 send "1\r"
 10 expect "Enter option:"
 11 send "?\r"
 12 interact

좋은 웹페이지 즐겨찾기