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

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

方法1:

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

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

[[email protected] ~]# useradd jump  #<==要在所有机器上操作。

[[email protected] ~]# echo 123456|passwd --stdin jump  #<==要在所有机器上操作。

Changing password for user jump.

passwd: all authentication tokens updated successfully.

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

[[email protected] ~]# su - jump

[[email protected] ~]$ ssh-keygen -t dsa -P ‘‘ -f ~/.ssh/id_dsa >/dev/null 2>&1  #<==生成密钥对。

[[email protected] ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub 192.168.33.130   #<==将公钥分发到其他服务器。

The authenticity of host ‘192.168.33.130 (192.168.33.130)‘ can‘t be established.

RSA key fingerprint is fd:2c:0b:81:b0:95:c3:33:c1:45:6a:1c:16:2f:b3:9a.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘192.168.33.130‘ (RSA) to the list of known hosts.

[email protected]‘s password:

Now try logging into the machine, with "ssh ‘192.168.33.130‘", and check in:

.ssh/authorized_keys

to make sure we haven‘t added extra keys that you weren‘t expecting.

[[email protected] ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub 192.168.33.129  #<==将公钥分发到其他服务器。

The authenticity of host ‘192.168.33.129 (192.168.33.129)‘ can‘t be established.

RSA key fingerprint is fd:2c:0b:81:b0:95:c3:33:c1:45:6a:1c:16:2f:b3:9a.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘192.168.33.129‘ (RSA) to the list of known hosts.

[email protected]‘s password:

Now try logging into the machine, with "ssh ‘192.168.33.129‘", and check in:

.ssh/authorized_keys

to make sure we haven‘t added extra keys that you weren‘t expecting.

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

菜单脚本如下:

cat <<menu

1)oldboy-192.168.33.129

2)oldgirl-192.168.33.130

3)exit

menu

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

function trapper () {

trap ‘:‘ INT  EXIT TSTP TERM HUP  #<==屏蔽这些信号。

}

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

以下为实战内容。

脚本放在跳板机上:

[[email protected] ~]# echo ‘[ $UID -ne 0 ] && . /server/scripts/jump.sh‘ >/etc/profile.d/jump.sh

[[email protected] ~]# cat /etc/profile.d/jump.sh

[ $UID -ne 0 ] && . /server/scripts/jump.sh

[[email protected] scripts]# 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

执行效果如下:

[[email protected] ~]# su - jump  #<==切到普通用户即弹出菜单,工作中直接用jump登录,即弹出菜单。

1)Web01-192.168.33.129

2)Web02-192.168.33.130

Pls input a num.:

1)Web01-192.168.33.129

2)Web02-192.168.33.130

Pls input a num.:1  #<==选1进入Web01服务器。

login in 192.168.33.129.

Last login: Tue Oct 11 17:23:52 2016 from 192.168.33.128

[[email protected] ~]$  #<==按ctrl+d退出到跳板机服务器再次弹出菜单。

1)Web01-192.168.33.129

2)Web02-192.168.33.130

Pls input a num.:2     #<==选2进入Web02服务器。

login in 192.168.33.130.

Last login: Wed Oct 12 23:30:14 2016 from 192.168.33.128

[[email protected] ~]$   #<==按ctrl+d退出到跳板机服务器再次弹出菜单。

1)Web01-192.168.33.129

2)Web02-192.168.33.130

Pls input a num.:110    #<==选110进入跳板机命令提示符。

your birthday:0926      #<==需要输入特别码才能进入的,这里管理员通道,密码要保密呦。

[[email protected] scripts]#  #<==跳板机管理命令行。

本文内容来源于:《跟老男孩学linux运维:Shell高级编程实战》

老男孩教育官网:www.oldboyedu.com

时间: 2024-11-16 05:45:53

利用Shell开发跳板机功能脚本案例的相关文章

用shell开发跳板机

信号列表: 在linux中和信号相关的常见命令为kill及trap命令,下来如何利用trap控制跳板机脚本来使用命令: 命令:kill  -l 和 trap  -l 企业实战中linux系统的重要信号及说明 HUP(1)         挂起 INT(2)           中断 OUIT(3)        退出 ABRT(6)        中止 ALRM(14)     报警 TERM(15)     终止 TSTP(20)       停止进程的运行,但该信号可能被处理或忽略 17.2

利用shell开发rsync服务启动脚本

利用shell函数开发rsync服务启动脚本,之前的不够专业 #!/bin/bash #chkconfig: 2345  20 80                       #这两行加入kconfig #description: Saves and restores system entropy  pool source /etc/init.d/functions    #调用标准的函数库 aa() {   echo "plz one canshu"   exit 5 } bb()

Shell实现跳板机,为什么用跳板机

整理自:http://blog.chinaunix.net/uid-22101889-id-3167454.html 注意:请谨慎使用,到现在为止,使用了,我还没找到改回去的方法. 1.     问题 第一.很多大公司的服务器都不允许直接登录,而是通过一个跳板机才能登录过去.在跳板机中,通常只能执行几个少数命令(如SSH),而其他命令是不允许执行的,那么怎样才能实现这个功能呢? 第二.一些小公司,由于服务器比较少,不需要什么跳板机之类的说法,公司的开发运维人员加起来也就那么十几二十人,通常大家都

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/pas

Shell开发MySQL主从监控脚本

监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员. 1)开发一个守护进程脚本每30秒实现检测一次. 2)如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误. 阶段3:3)如果IO和SQL线程出现异常,则通知邮件给管理员 使用数组技术实现上述脚本(获取主从判断及错误号部分) 主从监控脚本如下: #!/bin/bash CODE=( 1158 1159 1008 1007 1062 2003 ) fun_Base(){ #1.定义变量 #1.1

Python+Dialog开发跳板机脚本

创建普通用户.密钥对,上传到要控制的机器免密码 控制机跳脚本代码展示 [[email protected] tiaoban]$ cat /etc/profile.d/tiaoban.sh [ $UID -ne 0 ] && python /scripts/tiaoban/tiaoban.py 目录结构 [[email protected] ~]$ cat /scripts/tiaoban/tiaoban.py [[email protected] ~]$ tree /scripts/tia

02.利用Shell开发Redis多实例启动脚本

一.Redis部署情况 ## 软件部署情况 [[email protected] ~]# ls -ld /data/apps/redis <==目录本身及以下所有文件的属主/组为redis lrwxrwxrwx 1 root root 24 Oct 26 11:33 /data/apps/redis -> /data/apps/redis-4.0.14/ ## 实例部署情况 [[email protected] ~]# tree /data/redis/ <==目录本身及以下所有文件的属

简单跳板机的搭建笔记

摘录自  https://github.com/LaiJingli/open_bastion_host 环境: CentOS6.7 X86_64 跳板机地址:192.168.2.11 后端服务器地址:192.168.2.12 0.下载跳板机文件 git clone https://github.com/LaiJingli/open_bastion_host.git 1.创建跳板机用户 先创建tianbanji用户及tiaobanji组,只有跳板机组的用户ssh登录时才登录到非shell的跳板机程

mysql ssh 跳板机(堡垒机???)连接服务器

跳板机(Jump Server),也称堡垒机,是一类可作为跳板批量操作远程设备的网络设备,是系统管理员或运维人员常用的操作平台之一. 正常的登录流程 使用ssh命令登录跳板机: 登录跳板机成功后,在跳板机分配的终端中使用ssh命令再登录开发机,跳板机和开发机之间采用带密码的ssh验证,因此需要输入ssh私钥的密码. ssh隧道(通过跳板机)连接mysql 案例: A服务器   B服务器   C服务器mysql 现在mysql服务器C只能通过内网访问,B服务器就能通过内网连接访问到mysql A服