天天看點

伺服器自動登入 linux,使用expect控制ssh自動登入連接配接Linux伺服器方法

關鍵字: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

伺服器自動登入 linux,使用expect控制ssh自動登入連接配接Linux伺服器方法

使用expect控制ssh自動登入連接配接Linux伺服器方法

伺服器自動登入 linux,使用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: 中國

伺服器自動登入 linux,使用expect控制ssh自動登入連接配接Linux伺服器方法

Your current browser is:

伺服器自動登入 linux,使用expect控制ssh自動登入連接配接Linux伺服器方法

Your current system is:

伺服器自動登入 linux,使用expect控制ssh自動登入連接配接Linux伺服器方法

Original content, please indicate the source:

同福客棧論壇 | 蟒蛇科普 | 海南鄉情論壇 | JiaYu Blog

sicnature ---------------------------------------------------------------------

Welcome to reprint. Please indicate the source https://www.myzhenai.com.cn/post/1667.html