Linux 命令--expect自動化交互程序

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

相關文章
相關標籤/搜索