最近搞灰度發布,機器太多了,四個國家,每個國家兩台機器,啟停應用很費時間,所有打算寫個shell指令碼來提高效率(偷懶~)使用expect可以不用輸入密碼,避免重複勞動。
那什麼是expect?
查了一下,expect是乙個免費的程式設計工具,用來實現自動的互動式任務,而無需人為干預。說白了,expect就是一套用來實現自動互動功能的軟體。
在實際工作中,我們執行命令、指令碼或程式時,這些命令、指令碼或程式都需要從終端輸入某些繼續執行的指令,而這些輸入都需要人為的手工進行。而利用expect,則可以根據程式的提示,模擬標準輸入提供給程式,從而實現自動化互動執行。這就是expect!!!真的很好用。
先安裝expect
yum install -y expect
touch test.sh
chmod 755 test.sh
使用expect時發現執行指令碼的時候不能使用sh test.sh
應該用 ./test.sh,因為expect不是bash
expect + ssh
#!/usr/bin/expect
set timeout 3
expect
"*password:"
}interact
expect 主要是用 send、expect、spawn、interact 四個命令。
send 命令接收乙個字串引數,並將該引數傳送到程序。
expect 命令和send命令相反,expect通常用來等待乙個程序的反饋,我們根據程序的反饋,再傳送對應的互動命令。
spawn 命令用來啟動新的程序,spawn後的send和expect命令都是和使用spawn開啟的程序進行互動。
到此就完成了,不用一台臺機器登入上去執行命令了,一行命令搞定。
shell實現ssh登入並執行命令
使用expect可以不用輸入密碼,避免重複勞動。那什麼是expect?查了一下,expect是乙個免費的程式設計工具,用來實現自動的互動式任務,而無需人為干預。說白了,expect就是一套用來實現自動互動功能的軟體。在實際工作中,我們執行命令 指令碼或程式時,這些命令 指令碼或程式都需要從終端輸入某...
ssh批量登入並執行命令(python實現)
來自 www.cnblogs.com ma6174 archive 2012 05 25 2508378.html 區域網內有一百多臺電腦,全部都是linux作業系統,所有電腦配置相同,系統完全相同 包括使用者名稱和密碼 ip位址是自動分配的。現在有個任務是在這些電腦上執行某些命令,者說進行某些操作...
ssh批量登入並執行命令(python實現)
人生苦短,我用python!區域網內有一百多臺電腦,全部都是linux作業系統,所有電腦配置相同,系統完全相同 包括使用者名稱和密碼 ip位址是自動分配的。現在有個任務是在這些電腦上執行某些命令,者說進行某些操作,比如安裝某些軟體,拷貝某些檔案,批量關機等。如果一台一台得手工去操作,費時又費力,如果...