Shell의 자동화된 상호작용을 실현하기 위한 예상 명령을 설명하는 예

小云云
풀어 주다: 2017-12-22 09:19:26
원래의
2815명이 탐색했습니다.

이 글에서는 Shell의 자동화된 상호작용을 구현하기 위한 Expect 명령을 예제와 함께 설명하겠습니다. Shell을 통해 루프, 판단 등 간단한 제어 흐름 기능을 구현할 수 있습니다. 다음 글에서는 주로 쉘 자동화 상호작용을 구현하기 위한 Expect 명령에 대한 관련 정보를 소개하고 있으며, 샘플 코드를 통해 자세히 소개하고 있으니 함께 살펴보도록 하겠습니다.

Background

Linux 스크립트에는 원격 로그인 ssh, 원격 복사 scp, 파일 전송 sftp 등과 같은 원격 작업을 위한 많은 시나리오가 있습니다. 이러한 명령에는 모두 보안 암호 입력이 포함됩니다. 명령을 정상적으로 사용하려면 암호를 수동으로 입력하고 보안 확인을 수락해야 합니다. 자동화된 원격 작업을 달성하기 위해 예상 기능을 빌릴 수 있습니다.

expect는 사람의 개입 없이 통신하기 위해 자동화된 대화형 작업을 구현하는 데 사용되는 무료 프로그래밍 도구 언어입니다. Expect는 시간이 지날수록 그 기능이 더욱 강력해지며 시스템 관리자를 위한 강력한 보조자가 되었습니다. Expect를 사용하려면 Tcl 프로그래밍 언어 지원이 필요합니다. 시스템에서 Expect를 실행하려면 먼저 Tcl을 설치해야 합니다.

expect install

expect는 Tcl을 기반으로 생성되므로, Expect를 설치하기 전에 Tcl을 먼저 설치해야 합니다.

(1) Tcl 설치

홈페이지: http://www.tcl.tk

다운로드 주소: http://www.tcl.tk/software/tcltk/downloadnow84.tml

1. 소스 코드 패키지

wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz
로그인 후 복사

2를 다운로드합니다.3. 설치 및 구성

tar xfvz tcl8.4.11-src.tar.gz
로그인 후 복사

참고:


1 설치가 완료된 후 tcl 소스 코드의 루트 디렉터리에 들어가서 tclUnixPort를 복사합니다. .h 하위 디렉토리 unix에서 하위 디렉토리 generic으로 이동합니다.

2. tcl 소스 코드는 아직 설치 프로세스에 필요하므로 삭제하지 마세요.

(2) 설치 예상(Tcl 라이브러리 필요)


홈페이지: http://expect.nist.gov/


1. 소스 코드 패키지를 다운로드합니다

cd tcl8.4.11/unix 
./configure --prefix=/usr/tcl --enable-shared 
make 
make install
로그인 후 복사

2. 소스 코드 패키지의 압축을 풉니다

wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download
로그인 후 복사

. 3. 설치 및 구성

tar xzvf expect5.45.tar.gz
로그인 후 복사

expect


expect의 핵심은 생성, 예상, 전송 및 설정입니다.

spawn은 실행할 명령을 호출합니다


    expect는 명령 프롬프트 정보가 나타날 때까지 기다립니다. 즉, 사용자 입력에 대한 프롬프트를 캡처합니다.
  • send는 사용자 설명서를 대체하여 상호 작용이 필요한 값을 보냅니다. input
  • set은 변수 값
  • 을 설정합니다. 실행이 완료된 후에도 대화형 상태가 유지되며 제어권이 콘솔에 넘겨집니다. 해당 문장이 없을 경우 원격 단말기에 머무르지 않고 로그인 완료 후 종료됩니다.
  • expect eof를 추가해야 합니다. 이는 if....endif
  • expect 스크립트와 유사하게 캡처 터미널 출력 정보가 ​​종료됨을 의미합니다. 일반적으로 예상 eof는 다음과 같습니다. 자동화된 작업을 수행하는 데 사용됩니다.


기타 설정


    시간 초과가 발생하지 않을 것으로 예상 설정 시간 초과 설정 -1
  • 300초 시간 초과 예상을 설정합니다. 300초 이상 콘텐츠가 표시되지 않으면 시간 초과 설정 300을 종료합니다.
  • 쓰기 구문 예상


expect는 tcl 구문을 사용합니다


    Tcl 명령은 공백으로 구분된 단어로 구성됩니다. 그 중 첫 번째 단어는 명령 이름이고 나머지는 명령 매개변수입니다.
  • cmd arg arg


  • $ 기호 이 예에서 변수 이름은 foo입니다.
  • $foo


  • 대괄호는 중첩된 명령을 실행합니다. 예를 들어 한 명령의 결과를 다른 명령에 인수로 전달하려는 경우입니다. 명령을 사용한 다음
  • [cmd arg]


  • 기호를 사용하면 해당 문구가 명령에 대한 인수로 표시됩니다. "$" 기호와 대괄호는 여전히 큰따옴표
  • "some stuff"


    안에 해석됩니다.
  • 중괄호는 명령의 매개변수로 표시된 문구도 표시합니다. 그러나 중괄호 안의 다른 기호는 해석되지 않습니다.
  • {some stuff}


  • 백슬래시 기호는 특수 기호를 인용하는 데 사용됩니다. 백슬래시 기호도 사용됩니다. "$" 기호, 따옴표, 대괄호 및 중괄호의 특별한 의미를 닫는 데 사용됩니다.

  • Example


login.exp는 원격 로그인 전용, 바로가기 방법입니다. : login.exp "exclude" "${remote_ip} " "${remote_user}" "${remote_passwd}" "${remote_command}"

cd expect5.45 
./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.11/generic 
make 
make install 
ln -s /usr/tcl/bin/expect /usr/expect/bin/expect
로그인 후 복사

모두 익히셨나요? 이 기사를 읽은 후 쉘 자동화 상호 작용에 대해 더 깊이 이해하게 되기를 바랍니다.

관련 권장사항:

Linux 쉘 제작 녹화 및 재생 기능 스크립트

Python은 쉘 sed 대체 단순 기능을 구현합니다.

Linux 쉘 ftp 방식을 사용하여 날짜에 따라 파일을 다운로드합니다

위 내용은 Shell의 자동화된 상호작용을 실현하기 위한 예상 명령을 설명하는 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!