zoukankan      html  css  js  c++  java
  • 我的小小实验室之实现最简单的跳转

    需求:由于工作需要,我自己的工作站上搭建有很多套实验环境,而在某种特定场景下,我需要通过默认连接的终端能随时跳转切换到其他环境下临时测试使用,因为只有我自己用,无需引入复杂的跳转机系统,也不需要审计。
    环境:均为Linux服务器
    实现:我想通过最简单的一些运维知识,搭建一套最简易的跳转程序,提升自己的工作效率。

    1.梳理有跳转需求的环境信息

    首先我默认连接的环境本身就是一套Oracle环境,默认也是以oracle用户连接的,IP地址为192.168.1.61。先梳理出目前所有需要纳入跳转清单的实验环境IP地址: 这里我编辑 /home/oracle/jump_server/server_list 文件,内容如下:
    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地址。

    2.加入用户的环境变量

    编辑环境变量的配置文件,增加内容如下: vi ~/.bash_profile
    ###################
    ##  跳转主机列表  ## 
    ###################
    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'
    

    3.配置ssh无密码登陆

    这点我有考虑过是否有必要?是否因配置了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互信的当前所有配置信息(根据情况选做):

    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循环遍历数组,如下:

    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.展示跳转机使用效果

    最后来看下跳转机实际使用的效果:

    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.
    

    可以看到,这样方便的跳转功能,使我可以快速连接到各类环境进行测试学习。

  • 相关阅读:
    新思路,坚持创新;好想法,坚持执行
    新的一年,新的梦想
    新的一年,新的梦想
    大秦帝国-《治秦九论》
    大秦帝国-《治秦九论》
    大学生应当趁早谋划未来(二)--给表弟的建议
    大学生应当趁早谋划未来(二)--给表弟的建议
    解读OpenRTB(实时竞价)生态系统
    Java实现蓝桥杯VIP 算法训练 阶乘末尾
    Java实现 蓝桥杯VIP 算法训练 sign函数
  • 原文地址:https://www.cnblogs.com/jyzhao/p/12099875.html
Copyright © 2011-2022 走看看