linux遠端執行命令

2021-10-20 09:38:55 字數 2397 閱讀 9056

expect是乙個免費的程式設計工具語言,用來實現自動和互動式任務進行通訊,而無需人的干預。expect的作者don libes在2023年開始編寫expect時對expect做有如下定義:expect是乙個用來實現自動互動功能的軟體套件(expect [is a] software suite for automating interactive tools)。使用它,系統管理員可以建立指令碼來對命令或程式進行輸入,而這些命令和程式是期望從終端(terminal)得到輸入,一般來說這些輸入都需要手工輸入進行的。expect則可以根據程式的提示模擬標準輸入提供給程式需要的輸入來實現互動程式執行。甚至可以實現簡單的bbs聊天機械人。 :)

expect是不斷發展的,隨著時間的流逝,其功能越來越強大,已經成為系統管理員的的乙個強大助手。expect需要tcl程式語言的支援,要在系統上執行expect必須首先安裝tcl。

expect是一種自動互動語言,能實現在shell指令碼中為scp和ssh等自動輸入密碼自動登陸,我們通過shell可以實現簡單的控制流功能,如:迴圈、判斷等。但是對於需要互動的場合必須通過人工干預,expect就時是用來實現這種功能的工具。      從最簡單的層次來說,expect的工作方式像是乙個通用化的chat指令碼工具,chat指令碼最早用於uucp網路i內,以用來實現實現計算機之間需要建立連線時進行特定的登陸會話自動化。      chat指令碼由一系列的expect-send對組成,expect等待輸出中輸出的特定字元,通常是乙個提示符,然後傳送特定的響應。

2.expect 相關的命令 2.1 spawn:     spawn命令是expect的初始命令,它用於啟動乙個程序,之後所有expect操作都在這個程序中進行,如果沒有spawn語句,整個expect就無法再進行下去了,使用方法就像下面這樣:

spawn ssh [email protected]

在spawn命令後面,直接加上要啟動的程序等資訊。當然,如果真的不要spawn過程也沒有關係,雖然這樣就沒有辦法單獨執行,但是這個指令碼可以與任何呼叫它的程序進行互動。

2.2 expect:

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

spawn ssh [email protected]

expect

-re 「jzcj@」 } 2.3 send:     一般是expect中的動作命令,向程序傳送輸入內容,類似的是send_user表示把後面的內容輸出到標準輸出中,send_error表示輸出到標準錯誤中。

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

2.5 exit,close,wait:     exit,close,wait:exit表示退出指令碼,close表示立即關閉過程,而wait則是等待過程返回eof時關閉。

2.7 expect eof //退出環境

應用例項 注意,expectin檔案命名為.exp,實際檔案型別就是shell,在執行該指令碼語言時,入參與呼叫shell指令碼一致,可以通過引數獲取

[lindex $ar** 0]

以下指令碼的作用是登入指定ip的主機,到run_path 目錄下執行sh指令碼檔案

#!/usr/bin/expect #最多不超過10分鐘,命令執行持續的時間要比這個時間段,否則會提前退出 set timeout 600 set run_path "/home/jzcj/user/zhf/check_coll" set username [lindex $ar** 0] set password [lindex $ar** 1] set hostname [lindex $ar** 2]

spawn ssh $username@$hostname expect

"password:" "password:" } #exp_continue 動作,表示expect 的匹配從頭重新開始匹配 #expect timeout puts "\n****

" puts "\n login $ success start to exce command " puts "\n****

"expect "jzcj@*" \r"} expect "jzcj@*" expect "jzcj@*" exit 呼叫語法 exec ./ftp_137.exp user password host

以上就是良許教程網為各位朋友分享的linux相關知識。

java遠端執行linux命令

private static final string hostname 115.182.62.225 linux ip位址 private static final string username root linux使用者名稱 private static final string passwo...

Linux遠端命令 免密碼執行

使用金鑰 切換使用者目錄 cd 生成金鑰 ssh keygen t rsa 全程回車鍵即可 切換到金鑰路徑 cd ssh 檢視生成結果 ll 可以看到有id rsa,id rsa.pub兩個檔案 複製公鑰並重命名 cp id rsa.pub client authorized keys 複製公鑰到s...

遠端執行命令

遠端執行命令 這個分兩步,很簡單很實用。第一步,設定ssh免認證,免認證就是只不用密碼認證就可以直接登入,這在寫指令碼伺服器控制時特別有用。ssh keygen t rsa cd ssh ssh copy id xuexi01注 xuexi01是主機名,也可寫成ip,如192.168.2.11 第二...