实现简单跳板机脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现简单跳板机脚本相关的知识,希望对你有一定的参考价值。

参考技术A 1. 执行脚本后,显示你所能够管理的主机

2. 根据主机菜单,进行选择对应的数字连接其对应的主机

3. 写一个循环,连接完一台主机后退出,还是在脚本运行中,没有退出脚本,继续连接其他主机

4. 不能使用Ctrl+c d z等操作

5. 需要每次登陆我们的会话窗口,都是自动的执行该脚本,不可以管理服务器后台  /etc/bashrc

6. 需要留一个后门,使用暗号可以退出脚本

[root@shell ~]# cat /scripts/jumpserver.sh

#!/bin/bash

#1.定义主机清单菜单

menu()

cat<<EOF

##########################

1. DB01-10.0.0.51

2. DB02-10.0.0.52

3. WEB01-10.0.0.7

4. 显示主机列表清单

##########################

EOF



#2.打印清单

menu

#3.进入循环

trap "" HUP INT TSTP #禁止输入Ctrl+c +d +z等操作

while true

do

    read -p "请根据菜单输入你要进行连接的主机:" Num

    #4.根据菜单列表进行编写对应的命令序列

    case $Num in

        1)

            echo "你选择了连接DB01-10.0.0.51.............."

            echo "正在测试DB01主机的连通情况.............."

            ping -c1 -W1 10.0.0.51 &>/dev/null

            if [ $? -eq 0 ];then

                echo "DB01主机的连通情况是完好的!正在连接中................."

                ssh  root@10.0.0.51

            else

                echo "DB01主机的网络不可达!无法进行远程连接!"

            fi

            ;;

        2)

            echo "你选择了连接DB02-10.0.0.52.............."

            echo "正在测试DB02主机的连通情况.............."

            ping -c1 -W1 10.0.0.52 &>/dev/null

            if [ $? -eq 0 ];then

                echo "DB02主机的连通情况是完好的!正在连接中................."

                ssh  root@10.0.0.52

            else

                echo "DB02主机的网络不可达!无法进行远程连接!"

            fi

            ;;

        3)

            echo "你选择了连接WEB01-10.0.0.7.............."

            echo "正在测试WEB01主机的连通情况.............."

            ping -c1 -W1 10.0.0.7 &>/dev/null

            if [ $? -eq 0 ];then

                echo "WEB01主机的连通情况是完好的!正在连接中................."

                ssh  root@10.0.0.7

            else

                echo "WEB01主机的网络不可达!无法进行远程连接!"

            fi

            ;;

        4)

            clear

            menu

            ;;

        anhao)

            echo "管理人员退出脚本通道!"

            exit

            ;;

        *)

            echo "请不要乱输!请按照要求输入!"

    esac

done

[root@shell ~]# tail -1 /etc/bashrc

/bin/sh /scripts/jumpserver.sh

shell 实现跳板机

  • zbuz添加用户,并批量分发ssh公钥脚本:

#!/bin/bash
. /etc/init.d/functions
function add_user(){
        jumper="$1"
        useradd ${jumper}
        echo 123456 | passwd --stdin ${jumper} >/dev/null 2>&1
                if [ `grep -o $jumper /etc/passwd | wc -l` -gt 1 ]
                        then
                        action "add user ${jumper} success" /bin/true
                else
                        action "add user ${jumper} success failure" /bin/false
                        exit 0
                fi
        su ${jumper} -c "ssh-keygen -t dsa -P ‘‘ -f ~/.ssh/id_dsa >/dev/null 2>&1"
                if [ $? -eq 0 ]
                        then
                        action "Create ssh pub key success" /bin/true
                else
                        action "Create ssh pub key failure" /bin/false
                fi
}
add_user $*
for n in 7 8
    do
        /usr/bin/expect /server/scripts/fenfa_key.exp /home/${jumper}/.ssh/id_dsa.pub ${jumper} 11.0.0.${n} >/dev/null 2>&1
        if [ $? -eq 0 ]
          then
          action "fenfa ssh pub key to 11.0.0.${n} success" /bin/true
        else
          action "fenfa ssh pub key to 11.0.0.${n} failure" /bin/false
        fi
done
  • expect实现无密码验证

#!/usr/bin/expect
if { $argc != 3 } {
        puts "usage:expect $argv0 sshkey user host"
        exit
}
#define var
set sshkey [lindex $argv 0]
set user [lindex $argv 1]
set host [lindex $argv 2]
set password "123456"
spawn ssh-copy-id -i $sshkey [email protected]$host
expect {
        "yes/no"     {send "yes\r";exp_continue}
        "*password"  {send "$password\r"}
}
expect eof
  • 简单shell脚本实现跳板机

#!/bin/bash
function traper(){
        trap ‘‘ INT QUIT TSTP TERM HUP
}
function menu(){
        cat <<-EOF
================Host List==============
        1)11.0.0.7
        2)10.0.0.8
        3)exit
================Host End===============
        EOF
}
function host(){
USER=test09
        case "$1" in
          1)
            ssh [email protected]
            ;;
          2)
            ssh [email protected]
            ;;
          3)
            exit
            esac
}
function main(){
  while true
    do
        traper
        clear
        menu
        read -p ‘Pls input your choice:‘ num
        host $num
  done
}
main
  • 开机脚本调用跳板机脚本

cat /etc/profile.d/jump.sh 

#!/bin/bash
[ $UID -ne 0 ] && [ $USER != "zihang" ] &&/bin/bash /server/scripts/tiaoban.sh


========================不足之处,请多指教=========================

本文出自 “迷失在Linux” 博客,请务必保留此出处http://zihang.blog.51cto.com/158746/1913476

以上是关于实现简单跳板机脚本的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本实现企业级简易跳板机案例

Linux下trap+shell三层目录专业规范跳板机脚本

跳板机搭建

利用Shell开发跳板机功能脚本案例

利用Shell开发跳板机功能脚本案例

python实现跳板机