關鍵字:ssh自動輸入密碼 ssh輸入密碼 ssh免密碼登入linux ssh一鍵登入腳本
原創内容,轉載請注明出處:https://www.myzhenai.com.cn/post/1667.html https://www.myzhenai.com/thread-16105-1-1.html
因為我自己有幾台Linux的伺服器需要管理,有時候管理的時候需要ssh手動登入并執行相應代碼,操作非常繁鎖,于是想到自動化腳本,寫一個一鍵管理的腳本,以後隻要運作相應的腳本就可以管理對應的伺服器,這樣的效率就會高很多了,本來Linux上有一個shell腳本,但是執行它還是需要手動登入ssh,能不能自動登入ssh呢? 我查找了網上很多資料,有的人說用ssh-keygen管理友善,但缺點是需要在本地儲存Key驗證碼.于是便選擇了expect來實作.方法也非常簡單.
expect是Unix系統中用來進行自動化控制和測試的軟體工具,由Don Libes制作,作為Tcl腳本語言的一個擴充,應用在互動式軟體中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。該工具利用Unix僞終端包裝其子程序,允許任意程式通過終端接入進行自動化控制;也可利用Tk工具,将互動程式包裝在X11的圖形使用者界面中。
我們通過Shell可以實作簡單的控制流功能,如:循環、判斷等。但是對于需要互動的場合則必須通過人工來幹預,比如普通使用者使用sudo指令時就需要我們手動輸入密碼;expect就是能夠完成這種自動互動任務,而無需人的幹預。Expect的作者Don Libes在1990年開始編寫Expect時對Expect做有如下定義:Expect是一個用來實作自動互動功能的軟體套件(Expect [is a] software suite for automating interactive tools)。系統管理者可以使用它建立用來實作對指令或程式提供輸入的腳本:一般來說這些輸入都需要手工輸入(比如之前提到的執行sudo程式期望使用者從終端輸入使用者密碼)進行的,Expect則可以根據程式的提示 模拟标準輸入給程式提供資訊來實作互動程式執行。
expect和sh的shell腳本不一樣,expect是以 #!/usr/bin/expect 開始,而sh則是以# !/bin/bash開始.使用之前需要安裝expect. 這裡用到的隻是expect的幾個指令,expect,spawn和send. 回車符号分别是\r \n
#yum install expect*
建立一個shell腳本檔案,以.sh為字尾名的檔案.例如:AutoLogin.sh 然後将下邊的内容儲存到該檔案中.
#chmod +x AutoLogin.sh
#./AutoLogin.sh
切記expect腳本的執行方式與sh的執行方式不一樣,不能用 sh AutoLogin.sh 來執行,否則會出現以下的錯誤.
AutoLogin.sh: line 3: spawn: command not found
couldn't read file "password:": no such file or directory
AutoLogin.sh: line 5: send: command not found
AutoLogin.sh: line 6: interact: command not found
#!/usr/bin/expect
set timeout 30
spawn ssh -p 1238 110.110.110.110
expect "password:*"
send "0123456789\r"
expect "*]#"
send "rm -rf /usr/local/lxlabs/kloxo/serverfile/tmpstatsstatsstats/*log
# Mysql database optimization
mysqlcheck -Ao -uroot -p0123456789
# Clear system memory .
echo 3 > /proc/sys/vm/drop_caches
echo 0 > /proc/sys/vm/drop_caches
echo 1 > /proc/sys/vm/drop_caches
swapoff -a
swapon -a
yum clean all
# Restart the service component .
service mysqld restart
service lighttpd restart
echo '*********************************************************';
echo '**** ****';
echo '**** cao zuo jie shu ****';
echo '**** ming ling yi jing zhi xing wan cheng . ****';
echo '**** ****';
echo '**** https://www.myzhenai.com.cn ****';
#!/usr/bin/expect
set timeout 30
spawn ssh -p 1238 110.110.110.110
expect "password:*"
send "0123456789\r"
expect "*]#"
send "sh /home/OptimizationTools.sh\n"
expect "*]#"
send "exit\n"
expect eof
使用expect控制ssh自動登入連接配接Linux伺服器方法
使用expect控制ssh自動登入連接配接Linux伺服器方法
sicnature ---------------------------------------------------------------------
Your current IP address is: 117.68.146.87
Your IP address location: 安徽省合肥市巢湖市電信
Your IP address country and region: 中國
Your current browser is:
Your current system is:
Original content, please indicate the source:
同福客棧論壇 | 蟒蛇科普 | 海南鄉情論壇 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source https://www.myzhenai.com.cn/post/1667.html