Linux
用於儲存 ssh 遠端連接的伺服器列表的 Shell 腳本
我想將所有伺服器儲存在本地伺服器(Linux Jumpbox)中,因此我可以通過簡單地從我的 Linux jumpbox 遠端搜尋特定主機名和 ssh 來連接。
所以,要求是,輸入伺服器主機名,應該在現有伺服器列表中搜尋,如果找到,執行ssh連接,如果沒有找到,儲存在特定文件夾下並執行ssh連接。
我嘗試了以下簡單的 if 條件,但我實際上想使用文件夾或 LABEL 將儲存伺服器分類為 DEV、QA、UAT、PROD 等。
請分享您的建議/建議管理伺服器列表的最佳方式。還建議 IF 或 CASE 是否是更好的方法。
腳本*
#!/bin/bash if test -f /home/oracle/remote_hosts.lst then echo "The File /home/oracle/remote_hosts.lst exists" else echo "The File /home/oracle/remote_hosts.lst does not exist" exit 1 fi echo "Please enter the Host Name of Remote Host System: \c" read rhost if grep $rhost /home/oracle/remote_hosts.lst 1> /dev/null 2>&1 then ssh -l oracle $rhost else echo $rhost >> /home/oracle/remote_hosts.lst ssh -l oracle $rhost fi
您是否考慮過使用ssh 配置文件?
Host web HostName webserver.server.com User www Host db? maindb backupdb User oracle Host github.com IdentityFile ~/.ssh/git.pub
您可以使用它為幾乎所有命令行標誌設置預設值,使用萬用字元等。
我個人將它與簡單的 bash 別名結合起來,所以說輸入“sw”是“ssh web”的別名,只是為了讓我的生活更輕鬆一些。
只是為了澄清上面的一些事情。您只需要覆蓋您需要的值,這樣您就可以節省時間。例如,如果您唯一需要覆蓋的是使用者名,您可以將大多數主機放在同一主機下,用空格分隔。
在我的 ssh 配置文件中,一些定義有 10 行長,配置了埠轉發和特殊鍵,而 x11,其他定義只有 1 行長,並且匹配數千個主機。在上面的例子中,“db?” 將匹配“db3”。
使用註釋 (#),您仍然可以建構標籤的概念(或者只是將相同的伺服器類型合併在一起)。
如果您出於審核等原因需要伺服器列表,您還可以使用“LocalCommand”(和“PermitLocalCommand”)選項在本地電腦上執行操作,例如寫入本地文本文件。