mac或linux下的expect用法
Expect命令是一個用來處理互動的命令。藉助Expect,我們可以將互動過程中的一些動作(例如,登入跳轉機等)寫在一個指令碼上,使它能夠自動完成登入或其他動作。前提是mac使用ssh遠端登入沒有儲存密碼或自動登入的功能,因此使用expect指令碼的形式實現,保證mac上已經安裝了expect(brew install expect)。 首先,先整體看一下檔案內容混個臉熟,又個整體的概念及瞭解,如下
#!/usr/bin/expect -f if {$argc < 1} { send_user "usage: $argv0 <token number>" exit } set timeout 31 set pwd [lindex $argv 0] set pin 123456 set username yaowang spawn ssh ${username}@relay01.sftcwl.com expect "*assword:*" send "${pin}${pwd}\r" expect "* " send "ssh gz-op-admin01.gz.xxxxxx.com\r" send "\r" interact
接下來,在解釋各個行或命令符號的意義。Expect中最關鍵的是send、spawn、expect、interact四個命令。
send:向程序中傳送字串或者指定的密碼 | 使用者名稱等的組合字串
expect:從程序中讀取字串,例如可以讀取使用者登入的密碼等
spawn:此命令可以啟動新的程序操作
interact:表示允許使用者進行互動操作
1、其中,第一行【 #!/usr/bin/expect -f 】,這一行的意義是告訴作業系統腳本里的程式碼使用哪一個shell來執行,這裡expect和linux下的bash、windows下的cmd是一樣的。需要放在指令碼中的第一行。
2、第二行是校驗輸入引數個數是否符合,如果輸入引數小於1,也即沒有輸入引數的話,則會報錯並退出。
3、使用set命令設定一些基本的引數,如超時時間(單位:S。-1表示永遠不會超時)。set pwd [lindex $argv 0] 表示接收密碼pwd,$argv 陣列的第一個引數為輸入的密碼。pin碼和username等寫死引數等。
4、接下來說一下比較重要的spawn命令。【 spawn ssh ${username}@relay01.sftcwl.com 】有時候我們希望可以和某一個程序進行互動,spawn命令就是用來啟動新的程序。send和expect命令都是和spawn開啟的程序進行互動的。如果沒有安裝expect或者直接在預設的shell下面執行是無法找到spawn命令的。我們可以理解為spawn的主要功能就是給ssh的執行加個外殼,用它來傳遞互動指令。
5、【 expect "*assword:*" 】expect命令用來從程序收取字串“password”或者“Password”,例如我們在使用item2登入跳轉機的時候,程序會返回一個字串“Password”,expect就是用來接收它的。如果返回的值不匹配的話,程序就會等待我們設定的時間後返回(例如 31S)。expect "#" 命令執行完, 你要期待一個結果, 結果就是返回shell提示符了(是# 或者$)
6、【 send "${pin}${pwd}\r" 】 send命令用來執行互動動作,簡單的說就是接收一個字串引數,並將該引數傳送到程序,與手動輸入密碼的動作一樣,命令字串的結尾一定要加上“\r”。
7、【 interact 】執行完成後保持互動狀態,將控制權交給控制檯,可以進行手工操作了。如果沒有這一行指令的話,登入完成後會退出,而不是留在遠端終端上。寫成 interact 的最大好處是登入後不會退出,而會一直保持會話連線,可以後續手動處理其它任務,請根據實際情況自行選擇了。
8、【 exp_continue 】有時候,在進行互動的時候,會出現提示操作【 "*yes/no"
{ send
"yes\r"
; exp_continue}】此時,使用exp_continue命令就是讓指令碼繼續向下執行指令。
相關推薦
mac或linux下的expect用法
Expect命令是一個用來處理互動的命令。藉助Expect,我們可以將互動過程中的一些動作(例如,登入跳轉機等)寫在一個指令碼上,使它能夠自動完成登入或其他動作。前提是mac使用ssh遠端登入沒有儲存密碼或自動登入的功能,因此使用expect指令碼的形式實
關於Mac或Linux下GO的Permission denied提示錯誤
錯誤 chm lin pan int 提示 key 有時 linu 有時候當你下載第三方庫的時候,編譯時會提示Permission denied 權限不足, 出現這種錯誤因為權限不夠。其中一種辦法是需要把你項目目錄和go的pck、bin權限放開。 chmod -R
解決Mac 或 Linux下virtalbox安裝centos7沒有分配ip地址問題
發現問題 windows下使用virtalbox安裝centos7配置網路正常,但在mac或者Linux系統下使用virtalbox安裝centos7配置網路後,虛擬機器無法得到分配的ip地址 經過上面的設定後,啟動centos7虛擬機發現沒有正
linux下md5sum用法 (查看文件或字符串的md5值)
一般來說 生產 ech mes warn md5算法 換行符 tab鍵 bin MD5算法常常被用來驗證網絡文件傳輸的完整性,防止文件被人篡改。MD5 全稱是報文摘要算法(Message-Digest Algorithm 5),此算法對任意長度的信息逐位進行計算,產生一
linux下md5sum用法 (檢視檔案或字串的md5值)
MD5演算法常常被用來驗證網路檔案傳輸的完整性,防止檔案被人篡改。MD5 全稱是報文摘要演算法(Message-Digest Algorithm 5),此演算法對任意長度的資訊逐位進行計算,產生一個二進位制長度為128位(十六進位制長度就是32位)的“指紋”(或稱“報文摘要”),不同的檔案產生
mac 或linux上 pip 不支持ssl的問題
pip ssl報錯:pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.新版的pip 默認要求使用https源了,pip 的源可以使用國內的源,下載速度
linux下expect命令實現批量ssh免密
輸入 left 防止 輸出 one 時間 line jdb eof 有時候我們需要批量發送ssh命令給服務器,但是有可能有些服務器是新加入的,還沒有配置ssh免密,這個時候就會提示我們輸入yes/no 或者password等,expect腳本命令就是用於在提示這些的時候
Linux 下 expect 指令碼語言中互動處理常用命令
Linux 下 expect 指令碼語言中互動處理常用命令 Linux 下 expect 指令碼語言中互動處理常用命令 1. #!/usr/bin/expect 告訴作業系統腳本里的程式碼使用那一個 shell 來執行。這裡的 expect 其實和 Linux 下的 bash、win
mac和linux下使用Docker,部署SpringBoot專案到docker
主要是看一下如何在linux及mac上安裝docker,建立docker映象,部署SpringBoot專案到docker,並藉助於DaoCloud進行docker映象下載加速等。我用的電腦是mac,本身並不支援docker,需要安裝Docker ToolBox才能使用Dock
linux下rename用法--批量重新命名 轉
原文地址:https://www.cnblogs.com/hester/p/5615871.html Linux的rename 命令有兩個版本,一個是C語言版本的,一個是Perl語言版本的,早期的Linux發行版基本上使用的是C語言版本的,現在已經很難見到C語言版本的了, 由於歷史原因,在Perl語言大紅大
Linux 下cut用法總結
CUT cut 顧名思義,就是切~~是一個選取命令,其功能是將檔案中的每一行,“位元組” “字元” “欄位” 進行剪下,選取我們需要的,並將這些選取好的資料輸出至標準輸出。 create two new document to display #ca
linux下automake用法
作為Linux下的程式開發人員,大家一定都遇到過Makefile,用make命令來編譯自己寫的程式確實是很方便。一般情況下,大家都是手工寫一個簡單Makefile,如果要想寫出一個符合自由軟體慣例的Makefile就不那麼容易了。 在本文中,將給大家介紹如何使用 auto
linux下rdesktop用法
我自己用的引數rdesktop -g workarea -D -r clipboard:PRIMARYCLIPBOARD -a 16 -x lan 192.168.1.2 rdesktop是Linux下一個好用的用來連線Windows遠端桌面(當然不僅僅在於此,只要是基於R
linux下grep用法
linux grep命令 不定時更新中。。。 一、作用 百度 二、格式 grep [options] ‘pattern’ filename 三、option主要引數 下面所列的引數主要是一些常
ubuntu或linux下找不到apache伺服器配置檔案httpd.conf
原因是ubuntu中是apache2,沒有httpd.conf檔案,所有找不到。 我的是ubuntu14.04系統,apache2配置檔案在/etc/apache2/apache2.conf中, 如果你的不是在這個目錄下,可以通過此命令查詢:find / -name
Linux命令行下svn ignore忽略文件或文件夾用法
let export 方式 同時 oca 現在 rect strong pos Linux命令行下svn ignore忽略文件或文件夾用法 一、忽略單個目錄 1、忽略文件夾 假如目錄oa.youxi.com是從svn checkout出來的,在服務器本地目錄添加了m
Linux 下檢視區域網內所有主機IP和MAC(及nmap的用法)
用namp對區域網掃描一遍,然後檢視arp快取表就可以知道局域內ip對應的mac了。namp比較強大也可以直接掃描mac地址和埠。執行掃描之後就可以 cat /proc/net/arp檢視arp快取表了。 進行ping掃描,打印出對掃描做出響應的主機:
(轉)Linux下內存映射文件的用法簡介
target 共享 文件 知識 i/o 共享數據 log 需要 使用 簡介: 內存映射文件與虛擬內存有些類似,通過內存映射文件可以保留一個地址空間的區域,同時將物理存儲器提交給此區域,只是內存文件映射的物理存儲器來自一個已經存在於磁盤上的文件,而非系統的頁文
linux 下的局域網斷網攻擊或arp欺騙
pro 圖片 war 目標 掃描 關閉 主機 斷網 sys arp欺騙: /*正常情況下 電腦是將流量發送到網關 而欺騙後 則將流量傳到此機器的網卡上 再由此機器進行轉發至網關*/ --》 first: 使用fping -asg ip段/*掃描段內存活的主機*/ --》
windows和Linux下定時啟動或關閉服務
ref sta article start 處理程序 window pin blog win http://blog.csdn.net/clare504/article/details/17410643 1、Windows下的定時啟動程序可以采用系統的計劃和任務,定時