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

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


咨詢
建站咨詢
