내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Shell은 자동화된 상호작용을 기대합니다.
일상적인 Linux 운영 및 유지 관리 중에는 원격으로 서버에 로그인해야 하는 경우가 많습니다. 로그인 과정에서 대화형 프로세스가 필요하며 예/아니요와 같은 정보를 입력해야 할 수 있으므로 상호 작용을 위해 기대가 사용됩니다. .
주요 구문
❶[#!/usr/bin/expect]
이 줄은 스크립트에서 코드를 실행하는 데 사용할 셸을 운영 체제에 알려줍니다. 여기서 예상되는 것은 실제로 Linux의 bash 및 Windows의 cmd와 동일합니다. 참고: 이 줄은 스크립트의 첫 번째 줄이어야 합니다.
❷설정
예상 시간 초과는 10초입니다. 세션 시간 초과는 set 명령을 통해 설정할 수 있습니다. 시간 초과가 제한되지 않으면 -1로 설정해야 합니다.
예: set timeout 300 //세션 시간 제한이 300초임을 나타냅니다.
예: set timeout -1/setting/never timeout, 일반 설정
참고: 시간 제한을 설정해야 하는 이유는 무엇입니까? 기본 시간은 10초이므로 대화형 실행 중에 연결이 끊어져 완료되기 전에 작업 실행이 종료될 수 있습니다. 원격 FTP에서 파일을 동기화하는 우리 회사의 예약된 작업이 항상 종료되었습니다. 나중에 시간 제한을 -1로 설정했는데 괜찮았습니다.
❸스폰
generate 뒤에는 일반적으로 Linux 실행 명령이 옵니다. 이는 세션 열기, 프로세스 시작 및 후속 상호 작용 정보 추적을 의미합니다.
❹기대하다
generate에 의해 실행된 명령의 실행 결과만 Expect에 의해 캡처되며, 여기에는 주로 표준 입력 프롬프트 정보, eof 및 timeout이 포함됩니다. 사용자 입력을 캡처하라는 명령 프롬프트가 나타날 때까지 기다립니다.
➎보내다
상호 작용이 필요한 값을 보내는 것은 사용자의 수동 입력을 대체합니다. 이 명령은 자동으로 입력하거나 줄 바꿈할 수 없으며 일반적으로 r(캐리지 리턴) 또는 n을 추가해야 합니다.
Expect "password"{ send "abc123r"} //같은 줄의 전송 부분에는 {}가 있어야 합니다.
❻터미네이터는 eof/interact를 기대합니다.
기대하다
이것을 추가해야 합니다. 이는 if....endif와 유사하게 캡처 터미널 출력 정보가 종료됨을 의미합니다.
상호 작용하다
실행이 완료된 후에도 대화형 상태를 유지하며 제어권을 콘솔로 이관할 수 있습니다. 이때 수동 작업을 수행할 수 있습니다. 해당 문장이 없을 경우 원격 단말기에 머무르지 않고 로그인 완료 후 종료됩니다.
추신: Expect 스크립트는 Interact 또는 Expect eof로 끝나야 합니다. Expect eof는 일반적으로 자동화된 작업을 수행하기에 충분합니다.
예
쉘 스크립트에 예상 명령을 삽입하십시오. 형식은 다음과 같습니다.
예 1: 22.sh 폴더 생성 스크립트
#!/bin/sh 예상하다 ssh 10.1.1.196 생성 비밀번호를 기대하세요 {xxxn 보내기} cd /home/cg/hmf_app/testr을 보내세요 mkdir newworkr로 보내세요 나가다를 보내다 기대하다 종료 |
예시 2: 폴더 셸 스크립트 생성
예상하다 ssh 10.1.1.196 생성 비밀번호를 기대하세요 {xxxn 보내기} cd /home/cg/hmf_app/testr을 보내세요 mkdir newworkr로 보내세요 나가다를 보내다 기대하다 종료 |
예 3: 파일 복사
예상하다 시간 초과 설정 -1 scp [email protected]:/data/package/casb/$casbzip ./를 생성합니다. 비밀번호를 기대하세요 {xxxn 보내기} 기대하다 종료 |
주목:
종료
...
종료
쉘 스크립트를 나타냅니다.
인용하다:Shell은 자동화된 상호 작용을 예상합니다._shell 스크립트 대화형 자동 입력 콘텐츠-CSDN 블로그