自動化互動工具 expect

2021-10-10 02:42:46 字數 1980 閱讀 1964

***@***-lenovo-v110-15ikb:~/notebook$ scp ***@192.168.70.187:~/123 . 

***@192.168.70.187's password:

sudo apt install expect

* 安裝會在/usr/bin/下生成expect工具。

spawn           啟動新的程序

send 用於向程序傳送字串

expect 從程序接收字串,獲取匹配資訊,匹配成功則執行expect後面的程式動作

interact 允許使用者互動

exp_continue 在expect中多次匹配就需要用到

send_user 用來列印輸出 相當於shell中的echo

exit 退出expect指令碼

eof expect執行結束 退出

set 定義變數

puts 輸出變數

set timeout 設定超時時間

1. spawn命令用來啟動新的程序,spawn後的send和expect命令都是和使用spawn開啟的程序進行互動。

2. send 命令接收乙個字串引數,並將該引數傳送到程序。

3. expect命令和send命令相反,expect通常用來等待乙個程序的反饋,我們根據程序的反饋,再傳送對應的互動命令。

* 簡單流程

spawn啟動指定程序-->expect,獲取指定關鍵字-->send向指定程式傳送指定字元-->執行完成退出.

* 複雜流程

1. 迴圈expect,send處理

2. 退出迴圈後interact手動處理

...

* 檔案: 1.sh

#!/usr/bin/expect

set timeout 30 #設定expect命令等待時長

set host "101.200.241.109"

set username "root"

set password "123456"

spawn ssh $username@$host

expect "*password*"

interact

#!/usr/bin/expect

if

set timeout -1

set host [lindex $ar** 0]

set username [lindex $ar** 1]

set password [lindex $ar** 2]

spawn ssh $username@$host

expect "*password*"

interact

1. expect "\*password*" 

2. expect #加上exp_continue程式不會退出該條expect

"password"

}* 由於指令碼執行的性質,expect命令是順序執行的,一條expect只會執行一次,即使用方式1的寫法,如果執行完這條命令後,又出現password,不會觸發send,方式2加上exp_continue才能實現迴圈觸發。

#!/bin/bash

passwd='123456'

/usr/bin/expect <<-eof

set time 30

spawn ssh [email protected] df -th

expect

"*password:"

}expect eof

eof

linux自動化互動工具expect簡單配置使用

1 掛載 mount t iso9660 o loop dev cdrom mnt cd 2 查詢expect安裝包 yum list grep expect 3 安裝 yum install expect.i686 y 4 新建並編輯expect配置檔案vi expectdemo.sh 配置內容如...

linux自動化互動指令碼expect

expect指令碼是tcl指令碼語言的拓展。用來實現自動的互動式任務,無需人為干預。在實際開發中,執行shell指令碼有時候會輸入linux密碼或者是mysql密碼等,而expect可以幫我們輸入。expect在linux系統中沒有自帶,需要我們自行安裝,在ubuntu系統下,安裝命令如下 sudo...

Expect自動化互動式程式

expect是乙個用來實現自動互動功能的軟體套件,是基於tcl的指令碼程式設計工具語言 首先 要安裝expect 直接使用yum安裝即可 yum install expect y每次我們進行ssh連線時都需要輸入密碼 而且首次需要輸入yes來確認 root alice ssh p 22 jenny ...