日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

expect用法

發布時間:2023/12/13 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 expect用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

a) spawn spawn命令是Expect的初始命令,它用于啟動一個進程,之后所有expect操作都在這個進程中進行,如果沒有spawn語句,整個expect就無法再進行下去了,使用方法就像下面這樣:

spawnssh root@192.168.0.1

在spawn命令后面,直接加上要啟動的進程等信息。當然,如果真的不要spawn過程也沒有關系,雖然這樣就沒有辦法單獨執行,但是這個腳本可以與任何調用它的進程進行交互。

b) expect: expect命令用于等候一個相匹配的輸出,一旦匹配就執行后面的動作,這個命令接受幾個特有參數,用的最多的就是-re,表示使用正則表達式的方式匹配。expect命令還有一種用法,它可以在一個expect匹配中同時匹配多個關鍵字,只需要將關鍵字放在一個大括號中就可以了:

spawn ssh root@192.168.0.1

expect {

-re “password:”{exp_send “word”}

-re “TopsecOS#”{ }

}

一個相似的命令是expect_user,差異在于expect_user匹配用戶的輸入。

expect_user {

-re hello

{puts stdout "HELLO"; exp_continue}

}

這個代碼段首先從用戶那里獲取輸入,如果發現輸入的是hello字符時,就會激活下面的動作,打印HELLO字符,因為exp_continue命令的存在,這個程序會一直循環下去。

c) send:一般是expect中的動作命令,向進程發送輸入內容,類似的是send_user表示把后面的內容輸出到標準輸出中,send_error表示輸出到標準錯誤中。

d) exp_continue:需處于expect的動作中,表示expect的匹配從頭開始繼續匹配。

e) exit,close,wait:exit表示退出腳本,close表示立即關閉過程,而wait則是等待過程返回eof時關閉。

f) interact:運行表示將控制權交給用戶,與spawn生成的進程進行交互。由用戶與spawn生成的進程進行交互,比如登錄ftp服務器并下載的過程中,登錄ftp服務器的過程可以由用戶輸入自己的用戶名和密碼,然后用戶再輸入q字符將控制權交給腳本,由腳本完成后面的交互動作。

#scp_files.sh
#!/bin/bash ip="192.168.210.132" local_file=$1 remote_dir="/data" passwd="BigData_2015" expect -c " spawn scp $local_file bigdata@$ip:$remote_dir expect { "Password:" {send "$passwd "; exp_continue} } "
#! /usr/bash

cd /data2/201512_bak_file

pattern=$1

ls -l ${pattern}|awk '{print $NF}'|while read line
do
  sh /data2/201512_bak_file/scp_files.sh $line
done 

總結

以上是生活随笔為你收集整理的expect用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。