***@***-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 ...