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

范例17_6:开发企业级Shell跳板机案例。要求用户登录到跳板机仅能执行管理员给定的选项动作,不允许以任何形式中断脚本到跳板机服务器上执行任何系统命令

方法1:

1)首先做好SSH密钥验证(跳板机地址192.168.33.128)。

以下操作命令在所有机器上操作:

1
2
3
4
[root@oldboy~]# useradd jump  #<==要在所有机器上操作。
[root@oldboy~]# echo 123456|passwd --stdin jump #<==要在所有机器上操作。
Changingpassword for user jump.
passwd:all authentication tokens updated successfully.

以下操作命令仅在跳板机上操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@oldboy~]# su - jump
[jump@oldboy~]$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1  #<==生成密钥对。
[jump@oldboy~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub 192.168.33.130   #<==将公钥分发到其他服务器。
Theauthenticity of host '192.168.33.130 (192.168.33.130)' can't be established.
RSA keyfingerprint is fd:2c:0b:81:b0:95:c3:33:c1:45:6a:1c:16:2f:b3:9a.
Are yousure you want to continue connecting (yes/no)? yes
Warning:Permanently added '192.168.33.130' (RSA) to the list of known hosts.
jump@192.168.33.130'spassword:
Now trylogging into the machine, with "ssh '192.168.33.130'", and check in:
  
  .ssh/authorized_keys
  
to makesure we haven't added extra keys that you weren't expecting.
  
[jump@oldboy~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub 192.168.33.129  #<==将公钥分发到其他服务器。
Theauthenticity of host '192.168.33.129 (192.168.33.129)' can't be established.
RSA keyfingerprint is fd:2c:0b:81:b0:95:c3:33:c1:45:6a:1c:16:2f:b3:9a.
Are yousure you want to continue connecting (yes/no)? yes
Warning:Permanently added '192.168.33.129' (RSA) to the list of known hosts.
jump@192.168.33.129'spassword:
Now trylogging into the machine, with "ssh '192.168.33.129'", and check in:
  
  .ssh/authorized_keys
  
to makesure we haven't added extra keys that you weren't expecting.

2)实现传统的远程连接菜单选择脚本

菜单脚本如下:

1
2
3
4
5
                cat <<menu
                  1)oldboy-192.168.33.129
                  2)oldgirl-192.168.33.130
                  3)exit
menu

3)利用linux信号防止用户中断信号在跳板机上操作。

1
2
3
functiontrapper () {
        trap ':' INT  EXIT TSTP TERM HUP  #<==屏蔽这些信号。
}

4)用户登录跳板机后即调用脚本(不能命令行管理跳板机),并只能按管理员的要求选单。

以下为实战内容。

脚本放在跳板机上:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[root@oldboy~]# echo '[ $UID -ne 0 ] && . /server/scripts/jump.sh'>/etc/profile.d/jump.sh  
[root@oldboy~]# cat /etc/profile.d/jump.sh
[ $UID-ne 0 ] && . /server/scripts/jump.sh
[root@oldboyscripts]# cat /server/scripts/jump.sh
#!/bin/sh
#oldboy training
trapper(){
    trap ':' INT EXIT TSTP TERM HUP  #<==定义需要屏蔽的信号,冒号表示啥都不做。
}
main(){
while :
do
      trapper
      clear
      cat<<menu
       1)Web01-192.168.33.129
       2)Web02-192.168.33.130
menu
read -p"Pls input a num.:" num
case"$num" in
    1)
        echo 'login in 192.168.33.129.'
        ssh 192.168.33.129
        ;;
    2)
        echo 'login in 192.168.33.130.'
        ssh 192.168.33.130
        ;;
    110)
        read -p "your birthday:" char
        if "$char" "0926"];then
          exit
          sleep 3
        fi
        ;;
    *)
        echo "select error."
        esac
done
}
main

执行效果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@oldboy~]# su - jump  #<==切到普通用户即弹出菜单,工作中直接用jump登录,即弹出菜单。
     1)Web01-192.168.33.129
     2)Web02-192.168.33.130
Pls inputa num.:
     1)Web01-192.168.33.129
     2)Web02-192.168.33.130
Pls inputa num.:1  #<==选1进入Web01服务器。
login in192.168.33.129.
Lastlogin: Tue Oct 11 17:23:52 2016 from 192.168.33.128
[jump@littleboy~]$  #<==按ctrl+d退出到跳板机服务器再次弹出菜单。
     1)Web01-192.168.33.129
     2)Web02-192.168.33.130
Pls inputa num.:2     #<==选2进入Web02服务器。
login in192.168.33.130.
Lastlogin: Wed Oct 12 23:30:14 2016 from 192.168.33.128
[jump@oldgirl~]$   #<==按ctrl+d退出到跳板机服务器再次弹出菜单。
     1)Web01-192.168.33.129
    2)Web02-192.168.33.130
Pls inputa num.:110    #<==选110进入跳板机命令提示符。
yourbirthday:0926      #<==需要输入特别码才能进入的,这里管理员通道,密码要保密呦。
[root@oldboyscripts]#  #<==跳板机管理命令行

转载于:https://blog.51cto.com/13281352/1971686

shell开发跳板机功能脚本相关推荐

  1. linux shell跳板机,用shell开发跳板机

    信号列表: 在linux中和信号相关的常见命令为kill及trap命令,下来如何利用trap控制跳板机脚本来使用命令: 命令:kill  -l 和 trap  -l 企业实战中linux系统的重要信号 ...

  2. linux 跳板机脚本,shell 实现跳板机

    zbuz添加用户,并批量分发ssh公钥脚本:#!/bin/bash . /etc/init.d/functions function add_user(){ jumper="$1" ...

  3. idea连接跳板机_跳板机服务(jumpserver)

    一.跳板机服务作用介绍 1.有效管理用户权限信息 2.有效记录用户登录情况 3.有效记录用户操作行为 二.跳板机服务架构原理 三.跳板机服务安装过程 第一步:安装跳板机依赖软件 yum -y inst ...

  4. Linux下Dialog+Shell三层目录专业规范跳板机脚本

    #Dialog+Shell介绍 Dialog+Shell结合使用,方能体现出Dialog图形化的效果,在运维的时候,使用图形化界面,能给你一个更直观的感受,相信你会喜欢上他的 #创建脚本目录  [ro ...

  5. expect和shell脚本自动登录跳板机和使用AppleScript实现自动登录vpn软件

    作为一个程序员,一定要学会"偷懒",能写程序写脚本处理的一定不要自己手动搞.我就是一个懒人,每次登录公司的跳板机我都无比痛苦,因为这个过程分为下面这些步骤. 敲跳板机命令 输入密码 ...

  6. shell脚本实现通过ssh跳板机(动态密码)一键登陆服务器(相关问题与解决方案)

    在我日常工作中,登陆服务器一般分为两个个步骤,通过ssh命令登陆跳板机,然后再通过跳板机登陆服务器.登陆跳板机又分为三个步骤,输入一长串用户名,再通过手机令牌查看动态密码,输入密码+动态码.这样每次登 ...

  7. linux 跳板机脚本,shell 搭建简易跳板机

    创建跳板机脚本 [root@jumpserver sbin]# pwd /usr/local/sbin [root@jumpserver sbin]# vim jumpserver.sh #!/bin ...

  8. 齐志科技双层跳板机登陆机制v3.3.6 --shell脚本自动登陆实现

    #!/usr/bin/expect### 新版双层跳板机版本 #### 设置15秒超时时间 set timeout 15# 设置参数名称 set jumpusr [lindex $argv 0] se ...

  9. shell开发的主机登录管理脚本

    适配windows terminal 背景 设计 实现 流程图 脚本帮助文档 录入主机 登录主机 上传下载文件 操作主机记录 列出主机信息 代码展示 一个shell 开发的小型跳板机,献丑了 笔者的w ...

最新文章

  1. 云服务器怎么添加虚拟内存,云服务器怎么添加虚拟内存
  2. 程序员因拒绝带电脑回家被开除,获赔 19.4 万元
  3. 图表中各个参数的应用( AChartEngine XMultipleSeriesRenderer
  4. 可重构麦轮全向移动机器人分析(图片版)
  5. Win10环境下,SecureCRT连接不上虚拟机,显示连接超时Connection time out. 而且网络连接里没有网络适配器VMnet1和VMnet8,互ping也不同。...
  6. [NLP]OpenNLP块检测器(Chunker)的使用
  7. JNI中访问JList的代码
  8. sqlmap入门使用教程
  9. MENTOR 安装过程
  10. 冰雪之冠上的明珠与东方明珠 辉映在黄浦江两岸
  11. iPhone 8价格已破发!苹果无奈只能减产
  12. 【项目小结】爬虫学习进阶:获取百度指数历史数据
  13. Node 开发一个多人对战的射击游戏(实战长文)
  14. L1、L2正则化的原理及适用场景
  15. 读书笔记-袁腾飞讲高效学习法
  16. 基于华为WAC双机VRRP热备份下旁挂三层组网隧道转发模式解决方案
  17. html转盘游戏,使用Javascript和CSS3实现一个转盘小游戏(实战篇)
  18. 假设有一条绳子长3000m,每天剪去一半,请问需要几天时间,绳子的长度会短于五米?
  19. 在Chrome中打印CSDN博客内容
  20. vue中使用MathJax展示数学公式

热门文章

  1. Sql Server实用操作-动态sql语句基本语法
  2. 进程文件: cidaemon or cidaemon.exe
  3. china-pub赠书啦,超值畅销书5本
  4. 一件有趣的事:用Python爬了自己的微信朋友圈
  5. 搭建yum源,配置yum源
  6. (一).NET SubSonic2.0 的配置
  7. kali linux ssh不要密码登录密码,kali linux 登录ssh服务常见问题
  8. 个人博客前端模板_博客设计——概述
  9. BZOJ1036: [ZJOI2008]树的统计Count
  10. BCB key事件中判断Shift、Alt、Ctrl状态