婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 利用expect命令實現Shell自動化交互的方法詳解

利用expect命令實現Shell自動化交互的方法詳解

熱門標簽:4層電梯外呼控制系統設計 貴陽400電話到哪里去辦理 汨羅代理外呼系統 宿松高德地圖標注 網絡電話外呼系統撥號軟件 電銷機器人加盟多少錢 400電話申請找 天津智能外呼系統排名 申請400電話有什么用

背景

linux腳本中有很多場景是進行遠程操作的,例如遠程登錄ssh、遠程復制scp、文件傳輸sftp等。這些命令中都會涉及到安全密碼的輸入,正常使用命令時是需要人工手動輸入密碼并接受安全驗證的。為了實現自動化遠程操作,我們可以借用expect的功能。

expect是一個免費的編程工具語言,用來實現自動和交互式任務進行通信,而無需人的干預。expect是不斷發展的,隨著時間的流逝,其功能越來越強大,已經成為系統管理員的的一個強大助手。expect需要Tcl編程語言的支持,要在系統上運行expect必須首先安裝Tcl。

expect的安裝

expect是在Tcl基礎上創建起來的,所以在安裝expect前我們應該先安裝Tcl。

(一)Tcl 安裝

主頁: http://www.tcl.tk

下載地址: http://www.tcl.tk/software/tcltk/downloadnow84.tml

1.下載源碼包

wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz 

2.解壓縮源碼包

tar xfvz tcl8.4.11-src.tar.gz 

3.安裝配置

cd tcl8.4.11/unix 
./configure --prefix=/usr/tcl --enable-shared 
make 
make install 

注意:

1、安裝完畢以后,進入tcl源代碼的根目錄,把子目錄unix下面的tclUnixPort.h copy到子目錄generic中。

2、暫時不要刪除tcl源代碼,因為expect的安裝過程還需要用。

(二)expect 安裝 (需Tcl的庫)

主頁: http://expect.nist.gov/

1.下載源碼包

wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download 

2.解壓縮源碼包

tar xzvf expect5.45.tar.gz 

3.安裝配置

cd expect5.45 
./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.11/generic 
make 
make install 
ln -s /usr/tcl/bin/expect /usr/expect/bin/expect 

expect

expect的核心是spawn、expect、send、set。

spawn 調用要執行的命令

  • expect 等待命令提示信息的出現,也就是捕捉用戶輸入的提示:
  • send 發送需要交互的值,替代了用戶手動輸入內容
  • set 設置變量值
  • interact 執行完成后保持交互狀態,把控制權交給控制臺,這個時候就可以手工操作了。如果沒有這一句登錄完成后會退出,而不是留在遠程終端上。
  • expect eof 這個一定要加,與spawn對應表示捕獲終端輸出信息終止,類似于if....endif

expect腳本必須以interact或expect eof結束,執行自動化任務通常expect eof就夠了。

其他設置

  • 設置expect永不超時 set timeout -1
  • 設置expect 300秒超時,如果超過300沒有expect內容出現,則退出 set timeout 300

expect編寫語法

expect使用的是tcl語法

  • 一條Tcl命令由空格分割的單詞組成. 其中, 第一個單詞是命令名稱, 其余的是命令參數
    cmd arg arg arg
  • $符號代表變量的值. 在本例中, 變量名稱是foo.
    $foo
  • 方括號執行了一個嵌套命令. 例如, 如果你想傳遞一個命令的結果作為另外一個命令的參數, 那么你使用這個符號
    [cmd arg]
  • 雙引號把詞組標記為命令的一個參數. "$"符號和方括號在雙引號內仍被解釋
    "some stuff"
  • 大括號也把詞組標記為命令的一個參數. 但是, 其他符號在大括號內不被解釋
    {some stuff}
  • 反斜線符號是用來引用特殊符號. 例如:n 代表換行. 反斜線符號也被用來關閉"$"符號, 引號,方括號和大括號的特殊含義

示例

login.exp專用于遠程登錄,快捷使用方式: login.exp "exclude" "${remote_ip}" "${remote_user}" "${remote_passwd}" "${remote_command}"

#!/usr/bin/expect -f
##########################################################
# 通過SSH登陸和執行命令
#參數:1.Use_Type [check/execute]
#  2.SSHServerIp
#  3.SSHUser
#  4.SSHPassword
#  5.CommandList [多個命令間以;間隔]
#返回值:
#  0 成功
#  1 參數個數不正確
#  2 SSH 服務器服務沒有打開
#  3 SSH 用戶密碼不正確
#  4 連接SSH服務器超時
##########################################################
proc usage {} {
 regsub ".*/" $::argv0 "" name
 send_user "Usage:\n"
 send_user " $name Use_Type SSHServerIp SSHUser SSHPassword CommandList\n"
 exit 1
} 
## 判斷參數個數
if {[llength $argv] != 5} {
 usage
}
#設置變量值
set Use_Type [lindex $argv 0]
set SSHServerIp [lindex $argv 1]
set SSHUser [lindex $argv 2]
set SSHPassword [lindex $argv 3]
set CommandList [lindex $argv 4]
#spawn ping ${SSHServerIp} -w 5
#expect {
# -nocase -re "100% packet loss" {
#  send_error "Ping ${SSHServerIp} is unreachable, Please check the IP address.\n"
#  exit 1
# }
#}
set timeout 360
set resssh 0
#定義變量標記ssh連接時是否輸入yes確認
set inputYes 0
set ok_string LOGIN_SUCCESS
if {$Use_Type=="check"} {
 #激活ssh連接,如果要需要輸入yes確認,輸入yes,設置inputYes為1,否則輸入ssh密碼
 spawn ssh ${SSHUser}@${SSHServerIp} "echo $ok_string"
} else {   
 spawn ssh ${SSHUser}@${SSHServerIp} "$CommandList"
}
expect {
 -nocase -re "yes/no" {
  send -- "yes\n"
  set inputYes 1
 }
 -nocase -re "assword: " {
  send -- "${SSHPassword}\n"
  set resssh 1
 }
 #-nocase -re "Last login: " { 
 #  send -- "${CommandList}\n"
 #}
 $ok_string {}
 -nocase -re "Connection refused" {
  send_error "SSH services at ${SSHServerIp} is not active.\n"
  exit 2
 }
 timeout {
  send_error "Connect to SSH server ${SSHUser}@${SSHServerIp} timeout(10s).\n"
  exit 4
 }
}
#如果輸入了yes確認,輸入ssh密碼
if {$inputYes==1} {
 expect {
  -nocase -re "assword: " {
   send -- "${SSHPassword}\n"
   set resssh 1
  }
 }
}
#如果出現try again或者password:提示,說明輸入的用戶密碼錯誤,直接退出。
if {$resssh==1} {
 expect {
  -nocase -re "try again" {
   send_error "SSH user:${SSHUser} passwd error.\n"
   exit 3
  }
  -nocase -re "assword:" {
   send_error "SSH user:${SSHUser} passwd error.\n"
   exit 3
  }
  eof {}
 }
}
send_error -- "$expect_out(buffer)"
#-nocase -re "No such user" {
#  send_error "No such user.\n"
#  exit 5
# }
#exit

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Linux expect實現自動登錄腳本實例代碼
  • shell腳本無密碼登錄 expect的使用方法詳解
  • Linux下使用expect命令編寫自動化交互腳本
  • 詳解Linux使用shell+expect遠程登錄主機
  • ssh expect自動登錄的腳本代碼
  • linux expect 自動登錄交換機保存配置的方法

標簽:連云港 廣東 贛州 烏蘭察布 海北 昌都 撫州 臨沂

巨人網絡通訊聲明:本文標題《利用expect命令實現Shell自動化交互的方法詳解》,本文關鍵詞  利用,expect,命令,實現,Shell,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《利用expect命令實現Shell自動化交互的方法詳解》相關的同類信息!
  • 本頁收集關于利用expect命令實現Shell自動化交互的方法詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一区精品在线播放| 亚洲伦理在线免费看| 久久久无码精品亚洲日韩按摩| 日本一区二区视频在线观看| 亚洲欧洲成人精品av97| www久久久久| 国产麻豆精品在线| 成人丝袜视频网| 国产精品卡一卡二| 色婷婷综合久久久| 激情av综合网| 国产精品久久久久影院老司| 成人丝袜高跟foot| 九九国产精品视频| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩一区二区免费在线电影| 午夜精品福利视频网站| 日韩欧美中文字幕一区| 欧美精品乱码久久久久久 | 亚洲v日本v欧美v久久精品| 精品视频免费看| 国产精品麻豆视频| 久久久99精品久久| 91美女在线观看| 亚洲精品在线网站| 久久久亚洲高清| 在线视频国内一区二区| 欧美极品另类videosde| 最新国产精品久久精品| 欧美精品免费视频| 国产91精品一区二区麻豆网站 | 色悠久久久久综合欧美99| 亚洲一线二线三线久久久| 日韩免费一区二区| 91九色最新地址| 国产亚洲精品aa| 91在线播放网址| 午夜精品123| 另类欧美日韩国产在线| 亚洲欧洲99久久| 精品婷婷伊人一区三区三| 97精品国产97久久久久久久久久久久| 国产精品久久久久影院亚瑟| 91精品国模一区二区三区| 亚洲国产高清在线观看视频| 亚洲欧美偷拍卡通变态| 久久伊人中文字幕| 91天堂素人约啪| 91香蕉视频黄| 极品销魂美女一区二区三区| 亚洲天天做日日做天天谢日日欢| 亚洲日本成人在线观看| 国产午夜精品一区二区三区嫩草| 色88888久久久久久影院野外| 91美女蜜桃在线| 成人精品免费看| 日日摸夜夜添夜夜添国产精品| 亚洲一线二线三线久久久| 综合久久久久久| 免费人成精品欧美精品| 午夜精品久久久久久久久久久| 国产精品女同一区二区三区| 香蕉加勒比综合久久| 亚洲一区成人在线| 亚洲私人黄色宅男| 久久久久高清精品| 久久久久国产免费免费| 久久综合色天天久久综合图片| 亚洲日本在线视频观看| 亚洲欧洲色图综合| 亚洲裸体在线观看| 欧美精品一二三区| 国产精品久久久久久久浪潮网站| 久久精品一区二区| 一本大道久久a久久综合| 欧美哺乳videos| 日韩欧美国产精品一区| 91精品欧美福利在线观看| 一区二区三区四区高清精品免费观看| 日韩理论片在线| 亚洲综合一区二区三区| 国产精品一区专区| 成人av动漫在线| 99久久99久久精品免费看蜜桃| 精品国产一区二区在线观看| 国产欧美精品一区二区三区四区 | 国产自产高清不卡| 国产一区999| 日韩午夜电影在线观看| 久久综合久久鬼色| 日韩美女视频一区| 欧美国产激情一区二区三区蜜月| 《视频一区视频二区| 亚洲图片自拍偷拍| 日韩理论电影院| 色综合久久88色综合天天免费| 91成人在线免费观看| 欧美裸体一区二区三区| 亚洲大型综合色站| 国产尤物一区二区| 91啪亚洲精品| 亚洲男人都懂的| 国精产品一区一区三区mba视频 | 99久久99久久精品免费观看| 欧美主播一区二区三区| 欧美一区二区免费观在线| 欧美日韩在线播| 欧美高清一级片在线观看| 在线精品国精品国产尤物884a| 91精品国产综合久久久蜜臀图片| 日韩高清一区在线| 精品国产第一区二区三区观看体验 | 精品亚洲欧美一区| 久久综合久久综合久久综合| 成人av网在线| 亚洲一区二区在线播放相泽| 日韩欧美国产一区二区在线播放| 精品一区二区三区在线播放视频| 国产日韩精品一区二区三区| 99久久99久久综合| 亚洲va在线va天堂| 26uuu久久综合| 色诱视频网站一区| 精品在线一区二区三区| 国产精品麻豆99久久久久久| 欧美精品一二三四| 国产成人啪免费观看软件| 亚洲免费在线视频| 日韩视频一区二区| jlzzjlzz亚洲女人18| 日韩影院精彩在线| 国产精品白丝在线| 精品少妇一区二区三区在线播放| 99久久综合99久久综合网站| 日韩主播视频在线| 中文字幕人成不卡一区| 欧美一级艳片视频免费观看| 成人看片黄a免费看在线| 日本伊人色综合网| 最新国产精品久久精品| 精品乱人伦小说| 欧美日韩国产一级| 粉嫩高潮美女一区二区三区| 亚洲国产精品嫩草影院| 国产午夜精品一区二区三区嫩草| 在线成人av网站| 91九色最新地址| 99精品久久只有精品| 狠狠色综合日日| 午夜精品免费在线| 亚洲婷婷综合久久一本伊一区 | 欧美群妇大交群中文字幕| 丁香婷婷综合网| 理论电影国产精品| 亚洲国产日韩a在线播放| 中文字幕av在线一区二区三区| 91.xcao| 在线观看不卡一区| 成人国产精品免费观看| 国产综合成人久久大片91| 亚洲午夜精品一区二区三区他趣| 中文字幕乱码日本亚洲一区二区 | 国产精品福利一区二区| 欧美一级二级在线观看| 欧美日韩高清影院| 欧美影院一区二区| 91黄色免费网站| 91福利小视频| 欧美在线一二三| 在线亚洲一区二区| 日本精品一区二区三区四区的功能| 国产不卡在线一区| 国产成人鲁色资源国产91色综| 国内精品久久久久影院色| 蜜芽一区二区三区| 久久精品国产99| 精品一区二区三区在线观看国产| 国产乱码一区二区三区| 久久99久国产精品黄毛片色诱| 日韩主播视频在线| 午夜视黄欧洲亚洲| 日本美女视频一区二区| 青青青伊人色综合久久| 蜜桃久久久久久久| 蜜桃一区二区三区在线观看| 曰韩精品一区二区| 亚洲第一主播视频| 日韩激情一二三区| 久久99最新地址| 精品一二三四在线| 国产九色精品成人porny| 福利电影一区二区| 欧美在线观看一二区| 欧美日韩大陆在线| 精品久久久久久久一区二区蜜臀| 日韩欧美自拍偷拍| 亚洲欧美怡红院| 午夜视频一区二区| 国产精品一色哟哟哟| 99久久777色|