expect自動應答

2021-10-01 13:53:42 字數 2525 閱讀 5719

expect指令碼

1. expect簡介

expect是乙個用來處理互動的命令。借助expect,我們可以將互動過程寫在乙個指令碼上,使之自動化完成。

expect(自動應答) 基於tcl(tool command language)語言演變而來

expect中最關鍵的四個命令是:

send:用於向程序傳送字串

expect:從程序接收字串

spawn:啟動新的程序

interact:允許使用者互動

2. 安裝expect

# yum install expect -y

檢視expect資訊

[root@web1 sed]# rpm -qi expect

name : expect relocations: (not relocatable)

version : 5.44.1.15 vendor: centos

release : 5.el6_4 build date: mon 04 nov 2013 05:05:44 pm cst

install date: sun 21 aug 2016 11:48:49 pm cst build host: c6b9.bsys.dev.centos.org

group : development/languages source rpm: expect-5.44.1.15-5.el6_4.src.rpm

size : 566637 license: public domain

signature : rsa/sha1, mon 04 nov 2013 07:53:54 pm cst, key id 0946fca2c105b9de

packager : centos buildsystem

this package contains expect and some scripts that use it.

任何有互動性的操作,都可以用expect來做 

3. expect使用詳解

#!/bin/bash

expect &1 --/dev/null 代表把標準輸出重定向輸出到空洞,2>&1代表把出錯輸出也定向到標準輸出。

spawn passwd $1 --產生passwd $1這個命令

expect "password:" --當停在rd:結尾這個識別符號時

send "456\r" --我就把456傳給它

expect "password:" --當再次停在rd:結尾這個識別符號時

send "456\r" --我就再次把456傳給它

expect eof --表示expect結束

eof# sh 1.expect test --執行方法,因為指令碼裡寫的是$1,所以後面接你要修改密碼的使用者名稱

遠端ssh

#!/bin/bash

sed -i '/^'$1'/d' /root/.ssh/known_hosts

expect << eof > /dev/null 2>&1

spawn ssh $1

expect "no)?"

send "yes\r"

expect "password:"

send "123456\r"

expect "]#"

send "mkdir /root/desktop/aa\r"

send "touch /root/desktop/aa/$1\n"

send "exit\n"

expect eof

eof假設管理的機器有n臺,密碼也各不相同(沒有ssh等效性),現在需要在每個機器上都建立乙個檔案

# cat ip_user_passwd.txt --這個檔案裡包含你所有管理機器的ip,使用者及其對應的密碼

10.1.1.63 root oracle

10.1.1.77 root 1234

10.1.1.73 user1 123456

10.1.1.85 root 54321

......

# cat 6.expect

#!/bin/bash

cat ip_user_passwd.txt |while read ip user password

dosed -i '/^'$ip'/d' /root/.ssh/known_hosts

expect spawn ssh $ip -l $user

expect ")?"

send "yes\r"

expect "rd:"

send "$password\n"

expect "]#"

send "touch /tmp/123\n" --這裡可以修改你每次要在這些機器上做的命令

send "exit\n"

expect eof

eofdone

expect自動應答的工具

eof 輸入重定向 這種適用於出現的問題個數已知 expect是建立在tcl基礎上的乙個工具,它用來自動化完成一些需要互動的任務。系統中要先安裝expect 和 tcl expect 的四個命令 直譯器為 usr bin expect 例子 bin bash read p what s your n...

自動應答API memo

android關閉麥克風api public void setmicrophonemute boolean on sets the microphone mute on or off.parameters onset true to mute the microphone false to turn...

shell指令碼之expect自動應答語言

在指令碼中寫入與系統互動時可能出現的詢問語句,然後將要回答的答案也寫入指令碼中,實現自問自答,從而實現指令碼的人機互動。expect 是自動應答命令用於互動式命令的自動執行 spawn 是 expect 中的監控程式,其執行後會監控命令提出的互動問題 send傳送問題答案給互動命令 r 表示回車 e...