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

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
简介:

转载地址:http://oldboy.blog.51cto.com/2561410/1915017

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] #  #<==跳板机管理命令行。


      本文转自027ryan  51CTO博客,原文链接:http://blog.51cto.com/ucode/1951485 ,如需转载请自行联系原作者







相关文章
|
24天前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
68 1
|
10天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
33 2
6种方法打造出色的Shell脚本
|
1天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
10 2
|
15天前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
40 6
|
11天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
61 12
|
1月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
43 2
|
2月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
2月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
308 2
|
1月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
22 0