需求:因爲工做須要,我本身的工做站上搭建有不少套實驗環境,而在某種特定場景下,我須要經過默認鏈接的終端能隨時跳轉切換到其餘環境下臨時測試使用,由於只有我本身用,無需引入複雜的跳起色系統,也不須要審計。
環境:均爲Linux服務器
實現:我想經過最簡單的一些運維知識,搭建一套最簡易的跳轉程序,提高本身的工做效率。html
首先我默認鏈接的環境自己就是一套Oracle環境,默認也是以oracle用戶鏈接的,IP地址爲192.168.1.61。先梳理出目前全部須要歸入跳轉清單的實驗環境IP地址:
這裏我編輯 /home/oracle/jump_server/server_list 文件,內容以下:node
Oracle: Oracle 9i: 9 -> 192.168.1.9 Oracle 10g: 10 -> 192.168.1.10 Oracle 11g: 11 -> 192.168.1.11 Oracle 10g RAC: 171 -> 192.168.1.171 173 -> 192.168.1.173 Oracle 11g RAC: 61 -> 192.168.1.61 63 -> 192.168.1.63 Oracle 11g RAC(xData): 107 -> 192.168.1.107 108 -> 192.168.1.108 109 -> 192.168.1.109 Oracle EM 13c(12.1.0.2 RAC): 111 -> 192.168.1.111 112 -> 192.168.1.112 Oracle 19c RAC: 193 -> 192.168.1.193 195 -> 192.168.1.195 MySQL & PostgreSQL: 99 -> 192.168.1.99
能夠看到清楚的描述了環境的概要信息和對應IP地址。sql
編輯環境變量的配置文件,增長內容以下: vi ~/.bash_profileshell
################### ## 跳轉主機列表 ## ################### alias j='cat /home/oracle/jump_server/server_list' # Alias for my env: alias 9='ssh 192.168.1.9' alias 10='ssh 192.168.1.10' alias 11='ssh 192.168.1.11' alias 171='ssh 192.168.1.171' alias 173='ssh 192.168.1.173' alias 61='ssh 192.168.1.61' alias 63='ssh 192.168.1.63' alias 107='ssh 192.168.1.107' alias 108='ssh 192.168.1.108' alias 109='ssh 192.168.1.109' alias 111='ssh 192.168.1.111' alias 112='ssh 192.168.1.112' alias 193='ssh 192.168.1.193' alias 195='ssh 192.168.1.195' alias 99='ssh root@192.168.1.99'
這點我有考慮過是否有必要?是否因配置了ssh無密碼登錄會容易產生誤操做?但結合本身的需求,在我的測試環境中仍是須要這樣的功能方便提高效率的。
配置/etc/hosts文件,添加:
vi /etc/hosts數據庫
#My Oracle Server 192.168.1.9 DB9 192.168.1.10 DB10 192.168.1.11 DB11 192.168.1.61 DB61 192.168.1.63 DB63 192.168.1.171 DB171 192.168.1.173 DB173 192.168.1.107 DB107 192.168.1.108 DB108 192.168.1.109 DB109 192.168.1.111 DB111 192.168.1.112 DB112 192.168.1.193 DB193 192.168.1.195 DB195 192.168.1.99 DB99
這裏可參考我以前的隨筆:數組
上傳cluster開頭的2個腳本以後,配置環境變量,增長NODE_LIST變量值:安全
#NODE_LIST: export NODE_LIST='DB9 DB10 DB11 DB61 DB63 DB171 DB173 DB107 DB108 DB109 DB111 DB112 DB193 DB195 DB99'
清除ssh互信的當前全部配置信息(根據狀況選作):bash
cluster_run_all_nodes "hostname; rm -rf ~/.ssh" rm -rf ~/.ssh
3.1 使用cluster_run_all_nodes腳本,快速在各節點ssh-keygen生成RSA密鑰和公鑰服務器
cluster_run_all_nodes "hostname; ssh-keygen -q -t rsa -N \"\" -f ~/.ssh/id_rsa"
3.2 我須要使用shell結合for循環遍歷數組,以下:oracle
IP_NET="192.168.1." a=(9 10 11 61 63 171 173 107 108 109 111 112 193 195 99) for i in ${a[@]} do ssh $IP_NET$i cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys echo Summarize ssh info from $IP_NET$i into a single file. done
3.3 安全性,分發確認無誤:
chmod 600 ~/.ssh/authorized_keys cluster_copy_all_nodes ~/.ssh/authorized_keys ~/.ssh/ cluster_run_all_nodes "hostname; date"
若配置成功,就不須要輸入密碼便可執行完成:
[oracle@jystdrac1 ~]$ cluster_run_all_nodes "hostname; date" db09 Wed Dec 25 23:58:31 CST 2019 db10 Wed Dec 25 23:58:42 CST 2019 OEL-ASM Wed Dec 25 23:58:28 CST 2019 jystdrac1 Wed Dec 25 23:58:47 CST 2019 jystdrac2 Wed Dec 25 23:58:48 CST 2019 rac1-server Wed Dec 25 23:50:24 CST 2019 rac2-server Wed Dec 25 23:50:47 CST 2019 db01 Wed Dec 25 23:58:48 CST 2019 db02 Wed Dec 25 23:58:48 CST 2019 db03 Wed Dec 25 23:58:49 CST 2019 oemapp1 Wed Dec 25 23:58:42 CST 2019 oemapp2 Wed Dec 25 23:58:44 CST 2019 db193 Wed Dec 25 23:56:53 CST 2019 db195 Wed Dec 25 23:56:54 CST 2019 alfred Wed Dec 25 23:56:38 CST 2019
此外,特別須要注意99這臺機器因爲安裝多款數據庫產品,我爲了方即是跳轉到root用戶的,這樣切換到其餘任意用戶不須要輸入密碼,至於ssh互信這裏須要特殊配置下,只需將99上的root用戶輸入ssh-keygen生成的id_rsa.pub文件內容追加到61上oracle用戶下的authorized_keys,而後將61的這個文件再同步回99上root用戶下authorized_keys便可。
最後來看下跳起色實際使用的效果:
4.1 輸入j顯示能夠跳轉的服務器信息:
[oracle@jystdrac1 ~]$ j Oracle: Oracle 9i: 9 -> 192.168.1.9 Oracle 10g: 10 -> 192.168.1.10 Oracle 11g: 11 -> 192.168.1.11 Oracle 10g RAC: 171 -> 192.168.1.171 173 -> 192.168.1.173 Oracle 11g RAC: 61 -> 192.168.1.61 63 -> 192.168.1.63 Oracle 11g RAC(xData): 107 -> 192.168.1.107 108 -> 192.168.1.108 109 -> 192.168.1.109 Oracle EM 13c(12.1.0.2 RAC): 111 -> 192.168.1.111 112 -> 192.168.1.112 Oracle 19c RAC: 193 -> 192.168.1.193 195 -> 192.168.1.195 MySQL & PostgreSQL: 99 -> 192.168.1.99
4.2 選擇輸入對應主機便可實現跳轉:
好比選擇輸入107,便可跳轉到192.168.1.107的主機:
[oracle@jystdrac1 ~]$ 107 Last login: Wed Dec 25 22:31:16 2019 from db02 [oracle@db01 ~]$ ps -ef|grep pmon grid 19592 1 0 Dec22 ? 00:00:52 asm_pmon_+ASM1 oracle 20315 20293 0 00:02 pts/0 00:00:00 grep --color=auto pmon oracle 21339 1 0 Dec22 ? 00:00:58 ora_pmon_orcl1 [oracle@db01 ~]$ exit logout Connection to 192.168.1.107 closed.
好比選擇輸入193,便可跳轉到192.168.1.193的主機:
[oracle@jystdrac1 ~]$ 193 Last login: Wed Dec 25 22:30:01 2019 from 192.168.1.61 [oracle@db193 ~]$ ps -ef|grep pmon grid 16918 1 0 Nov07 ? 00:05:33 asm_pmon_+ASM1 oracle 17329 1 0 Nov07 ? 00:06:51 ora_pmon_jydb1 oracle 28698 28674 0 00:00 pts/0 00:00:00 grep --color=auto pmon [oracle@db193 ~]$ exit logout Connection to 192.168.1.193 closed.
好比選擇輸入99,便可跳轉到192.168.1.99的主機(由於以前特殊處理,因此可成功跳轉到root用戶):
[oracle@jystdrac1 ~]$ 99 Last login: Thu Dec 26 00:24:57 2019 from 192.168.1.61 [root@alfred ~]# ps -ef|grep postgres postgres 17659 1 0 Dec23 ? 00:00:18 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data/ postgres 17662 17659 0 Dec23 ? 00:00:00 postgres: logger process postgres 17664 17659 0 Dec23 ? 00:00:00 postgres: checkpointer process postgres 17665 17659 0 Dec23 ? 00:00:04 postgres: writer process postgres 17666 17659 0 Dec23 ? 00:00:05 postgres: wal writer process postgres 17667 17659 0 Dec23 ? 00:00:15 postgres: autovacuum launcher process postgres 17668 17659 0 Dec23 ? 00:00:32 postgres: stats collector process postgres 17669 17659 0 Dec23 ? 00:00:00 postgres: bgworker: logical replication launcher root 19218 19196 0 00:28 pts/0 00:00:00 grep --color=auto postgres [root@alfred ~]# su - postgres Last login: Tue Dec 24 09:23:16 CST 2019 on pts/0 -bash-4.2$ psql psql (10.11) 輸入 "help" 來獲取幫助信息. postgres=# \q -bash-4.2$ exit 登出 [root@alfred ~]# exit logout Connection to 192.168.1.99 closed.
能夠看到,這樣方便的跳轉功能,使我能夠快速鏈接到各種環境進行測試學習。