셸 에서 expect 명령 을 사용 하여 원 격 명령 스 크 립 트 를 실행 합 니 다.

expect 는 자동 상호작용 기능 을 실현 하 는 도구 중 하나 로 expect - send 를 사용 하여 상호작용 과정 을 실현 합 니 다.
주의:
1. 스 크 립 트 의 실행 방법 은 bash 셸 과 다 릅 니 다. 예 를 들 어 expect example. sh.
2. 한 스 크 립 트 에 파 라 메 터 를 전달 할 때 bash 셸 은 $1, 2... 파 라 메 터 를 받 습 니 다.한편, e x p e c t 는 스 크 립 트 의 실행 매개 변 수 를 배열 2 에 저장 하여 인 자 를 받 습 니 다.expect 는 스 크 립 트 의 실행 매개 변 수 를 배열 2 에 저장 하여 인 자 를 받 습 니 다.expect 는 스 크 립 트 의 실행 매개 변 수 를 배열 argv 에 저장 합 니 다. 스 크 립 트 에 서 는 보통 변수 에 할당 합 니 다: set 변수 이름 [lindex $argv 매개 변수]
#!/usr/bin/expect
set ip [lindex $argv 0]
set password [lindex $argv 1]
set timeout 2
spawn telnet $ip
expect "*femto login:"
send "root\r"
expect "*Password:"
send "$password\r"
# 进入指定的机器后,就可执行相应的命令或者脚本
interact
#expect eof

메모: 로그 인 후 원 격 단말 기 를 종료 하면 expect eof 를 쓰 면 됩 니 다.
3. 스 크 립 트 실행
expect autologin.sh 192.168.1.240 root

서버 재 부팅, ftp, ls, scp 등 원 격 서버 에 로그 인 하 는 간단 한 명령 을 expect 명령 으로 실행 해 야 할 때 가 많 습 니 다.비밀 번 호 를 입력 하 는 대화 형 장면 과 관련 되 는데 이때 expect 명령 의 큰 효과 가 나 왔 습 니 다. 다음은 비교적 전형 적 인 스 크 립 트 입 니 다.
#!/usr/bin/tclsh
package require Expect
set host_ip1 [lindex $argv 0]
set host_usr [lindex $argv 1]
set host_pwd [lindex $argv 2]
spawn ssh $host_usr@$host_ip1
set timeout 60
expect {
  -re "password" {send "$host_pwd
"} -re "yes/no" {send "yes
";exp_continue} # 有的时候输入几次密码来确认,exp_continue } expect "#" send "ls /home/${host_user} | tee -a /tmp/ls.txt \r" expect "#" send "exit\r" expect eof

총결산
이상 은 이 글 의 모든 내용 입 니 다. 본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다. 여러분 의 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기