expect
是Linux的自動化交互程序;expect
從其餘的交互式程序指望(expect)輸出,同時對所指望的輸出作出相應。shell
下面經過一段代碼來講明expect
經常使用的命令。如今咱們想經過ssh
命令遠程登陸一臺機器, 同時在遠程主機上執行命令ls
。代碼以下ssh
1 #! /usr/bin/expect 2 set timeout 20 3 4 send_user "請輸入用戶名:\n" 5 expect_user -re "(.*)\n" 6 set username $expect_out(1,string) 7 8 send_user "請輸入主機名或IP:\n" 9 expect_user -re "(.*)\n" 10 set host $expect_out(1,string) 11 12 stty -echo 13 send_user "請輸入密碼:\n" 14 expect_user -re "(.*)\n" 15 set password $expect_out(1,string) 16 stty echo 17 18 spawn ssh $username@$host 19 expect { 20 "*password" {send "$password\n";exp_continue} 21 "#" {send "ls\n"} 22 "timeout" {send_user "登陸遠程主機$username@$host超時!";exit} 23 } 24 interact
第1行#! /usr/bin/expect
指明腳本的解釋器,不一樣的系統略有不一樣;第二行set timeout 20
設置命令expect
的超時時間,單位爲秒;第4~6行提示用戶輸入用戶名,並將用戶的輸入存儲在變量username
中;第8~10提示用戶輸入主機或IP地址,並將用戶的輸入存儲到變量host
;第12~16行提示用戶輸入密碼,並將用戶的輸入存儲到變量password
;第18行開啓一個進程用於執行命令ssh $username@$host
;第19~23行和命令ssh $username@$host
交互;第24行將交互交給用戶。spa