新聞中心
為此我們可以使用shell腳本結(jié)合expect來(lái)實(shí)現(xiàn)自動(dòng)單邊無(wú)密登錄功能。而Shell腳本則是由多個(gè)Shell語(yǔ)句組成的文本文件,安裝expect在Ubuntu系統(tǒng)中可以通過(guò)以下命令安裝:
在日常工作中,我們經(jīng)常需要遠(yuǎn)程連接到其他服務(wù)器或設(shè)備進(jìn)行管理、維護(hù)等操作。但是每次都輸入用戶名和密碼十分繁瑣且容易出錯(cuò),為此我們可以使用shell腳本結(jié)合expect來(lái)實(shí)現(xiàn)自動(dòng)單邊無(wú)密登錄功能。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的肇源網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
首先介紹一下什么是shell腳本和expect。Shell是Linux/Unix系統(tǒng)下的命令解釋器,它能夠解釋執(zhí)行用戶輸入的命令并將結(jié)果輸出給用戶。而Shell腳本則是由多個(gè)Shell語(yǔ)句組成的文本文件,它類似于Windows下的批處理文件。
Expect則是一個(gè)用于自動(dòng)化交互式任務(wù)的工具集,在Linux/Unix系統(tǒng)中也被稱為“超級(jí)TCL”。Expect可以模擬人與計(jì)算機(jī)之間的交互過(guò)程,并根據(jù)特定情況做出相應(yīng)反應(yīng)。
接下來(lái)就讓我們看看如何利用這兩個(gè)工具來(lái)實(shí)現(xiàn)自動(dòng)單邊無(wú)密登錄吧!
第一步:安裝expect
在Ubuntu系統(tǒng)中可以通過(guò)以下命令安裝:
```bash
sudo apt-get install expect
```
其他Linux發(fā)行版請(qǐng)參考對(duì)應(yīng)的包管理器進(jìn)行安裝。
第二步:編寫shell腳本
編寫一個(gè)名為login.sh的腳本文件(當(dāng)然你也可以取別的名字),并在文件頭部添加以下內(nèi)容:
#!/bin/bash
這行代碼告訴系統(tǒng),這個(gè)腳本應(yīng)該使用Bash解釋器來(lái)執(zhí)行。
然后,在腳本中添加以下代碼:
# 定義變量
username="your_username"
password="your_password"
ip_address="remote_server_ip"
# 執(zhí)行expect命令
/usr/bin/expect << EOF
spawn ssh $username@$ip_address
expect {
"yes/no" { send "yes\r"; exp_continue }
"password:" { send "$password\r" }
}
interact
EOF
echo "Login Success!"
以上代碼中,我們定義了三個(gè)變量:用戶名、密碼和遠(yuǎn)程服務(wù)器IP地址。其中`<< EOF`表示將接下來(lái)的一段文本作為輸入傳遞給/usr/bin/expect命令,并以EOF為結(jié)尾標(biāo)記。
接著使用`spawn ssh $username@$ip_address`啟動(dòng)SSH連接,如果第一次連接會(huì)提示是否繼續(xù)連接(即“Are you sure you want to continue connecting (yes/no)?”),我們通過(guò)模擬用戶輸入“yes”的方式跳過(guò)此步驟;否則直接輸入密碼進(jìn)行登錄。
最后使用`interact`命令交互式地進(jìn)入遠(yuǎn)程服務(wù)器控制臺(tái),可以隨時(shí)退出當(dāng)前ssh會(huì)話返回到shell環(huán)境下。同時(shí)輸出“Login Success!”表示登錄成功。
第三步:賦予腳本可執(zhí)行權(quán)限并運(yùn)行
在Linux系統(tǒng)中需要賦予文件可執(zhí)行權(quán)限才能運(yùn)行,使用以下命令:
chmod +x login.sh
然后運(yùn)行腳本:
./login.sh
如果一切順利,你將會(huì)看到如下輸出信息:
spawn ssh your_username@remote_server_ip
The authenticity of host 'remote_server_ip (xxx.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes # 這里模擬用戶輸入"yes"
Warning: Permanently added 'remote_server_ip' (ECDSA) to the list of known hosts.
your_password # 輸入密碼(不會(huì)顯示明文)
Last login: Fri Jan 1 00:00:00 2022 from xxx.xxx.xxx.xxx
# 出現(xiàn)遠(yuǎn)程服務(wù)器控制臺(tái)的提示符表示登錄成功!可以愉快地進(jìn)行操作了。
[user@remote ~]$
Login Success!
總結(jié)
通過(guò)上述步驟,我們已經(jīng)成功實(shí)現(xiàn)了自動(dòng)單邊無(wú)密登錄功能。當(dāng)然這只是一個(gè)簡(jiǎn)單示例,實(shí)際應(yīng)用中可能還需要考慮更多的情況和異常處理。
希望大家能夠?qū)W習(xí)并掌握shell腳本和expect工具的使用方法,在日常工作中提高效率、減少出錯(cuò)率。同時(shí)也建議在生產(chǎn)環(huán)境中謹(jǐn)慎使用此類自動(dòng)化工具,并嚴(yán)格遵守安全規(guī)范以確保系統(tǒng)安全穩(wěn)定運(yùn)行。
當(dāng)前文章:如何通過(guò)shell腳本和expect實(shí)現(xiàn)自動(dòng)單邊無(wú)密登錄功能
本文路徑:http://m.fisionsoft.com.cn/article/djiccei.html


咨詢
建站咨詢
